发布网友 发布时间:2022-04-20 02:58
共2个回答
懂视网 时间:2022-04-29 10:19
一、字面量方式
var obj = { name: 'mm', age: 18, sayName: function() { console.log(this.name); } }
问题:创建多个对象时会造成代码冗余,很占内存空间。
二、工厂模式
问题:虽然解决了对象字面量创造对象冗余的问题,但是存在对象识别的问题,不能反映它们之间的内在关系。
三、构造函数模式
问题:解决了工厂模式的问题,但是相同方法重复创建就浪费了内存空间。
四、原型模式
问题:共享方法,解决了构造函数的问题。但是当前实例的引用类型的属性被所有实例共享,一个变所有变。
五、组合模式(构造函数+原型模式)
这是常用的创建方式。
通过构造函数模式定义实例属性,通过原型模式定义方法和共享的属性。
推荐教程:js入门教程
热心网友 时间:2022-04-29 07:27
1.对象字面量创建对象
var obj = { a:1,b:2 };
注意:对象字面量是一个表达式,这种表达式每次运算都会创建并初始化一个新对象,并计算这个新对象的每个属性值。所以如果在循环体内使用对象字面量,每次循环时都会创建新对象。
2.通过new运算符创建对象
var obj = new Object(); //创建空对象 var ary = new Array(); //创建空的数组对象
注意:new运算符后面跟的是一个函数调用,这个函数被称为构造函数。js中原始类型都包含内置的构造函数,也可以自己定义构造函数。
3.通过立即执行函数创建对象
var obj = (function(){ return {x:1,y:2};}());
注意:在立即执行函数内部一定要有return语句,return出的内容就是待创建的对象。
4.通过Object.create()创建对象
var obj = Object.create({x:1,y:2});
注意:Object.create()是一个静态函数,传入原型对象就可以创建继承此原型对象的对象,例如上面的例子中obj对象继承了x,y属性。