首页 > 软件开发 > JavaScript >

js怎么创建对象

来源:互联网 2023-03-16 23:56:54 415

贴个代码先:function O(user,pwd){ //use constructorthis.user=user;this.pwd=pwd;this.get=get;return this;}function O2(user,pwd){ //use factoryvar obj=new Object();obj.user=user;obj.pwd=pwd;obj.get=get;return obj;}function O3(){ //use prototype}O3.prototype.user='abc';O3.prototype.pwd='dis';// O3.propotype.get='get';//O3.prototype.get(){//alert(this.pwd);//}function O4(user,pwd){this.user=user;this.pwd=pwd;return this;}O4.prototype.get=function(){alert('123');}//function get(){//alert("This User:" this.user);// }function test2(){//var a=new O2('Us','Pw'); use factory & constructor//var a=new O3(); //use prototype//a.get();var a=new O4('*U4','P4'); //混合//a.user='Not ABC'; //set new property//alert(a.user);a.get();}常用的MS 就这几种,可能还有其它的wkT办公区 - 实用经验教程分享!

方法/步骤

  • 1

    本文讨论几种js创建对象的方法,先从最好理解的工厂模式开始wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 2

    这里先定义o为一个空的对象,然后为o设置了一堆属性。其实也可以直接给o属性的嘛,所以如果这样写也是ok的。wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 3

    还有一种办法是利用无敌的this,因为this就表示当前运行时的对象,将构造函数this的作用域指向新对象,将当前运行对象的属性和方法都赋给新对象,这样对象模式称为构造函数模式wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 4

    在这个例子中,tanya和ansel都有一个constructor属性,该属性指向person。考虑一下如下的情况:wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 5

    发现两次弹出的都是ansel,这是因为不用new的话,就不是一个person的实例,而仅仅在执行函数。而在全局作用域调用一个函数时this总是指向Global对象。而Global对象在浏览器中就是window对象。我们还可以用构造模式在另外一个对象中调用sayName方法,还记得Apply和call么,来吧再考虑另外一种情况,wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 6

    原型模式就要考虑原型链了,分析一下,sayName方法在实例中被重复定义了两次,但其实没有必要创造两个一样的副本。使用原型方法,可以使是tanya和ansel的共享一个sayName方法。于是原型模式的写法如下:wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 7

    实际应用时,不是一成不变的套用某种模式,活学活用。需要共享方法的时候就用原型模式,需要使用副本的时候就用构造模式,还可以结合起来,把所有信息都封装在构造函数中,而通过在构造函数中初始化原型,使得对象保持了同时使用构造函数和原型的优点。wkT办公区 - 实用经验教程分享!

    js怎么创建对象wkT办公区 - 实用经验教程分享!

  • 7此文章未经授权抓取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!wkT办公区 - 实用经验教程分享!


    标签: JAVASCRIPT

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码