js 创建对象的几种方式
2014-08-14 14:52
453 查看
创建对象 1、工场模式 缺点无法解决对象识别的问题 function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = fucntion(){ alert(this.name); } retrurn o; } var person1 = createPerson("Nicholas",22,"Engineer"); var person2 = createPerson("Nicholas",35,"Engineer"); 2、构造函数模式 与工厂模式不同: A 没有显示创建对象 B 直接将属性和方法赋值给了 this 对象 C 没有 return 语句 D 构造函数有 constructor(构造函数) 属性,该属性指向 Person,这个属性最初是用来标识对象类型的 E 另外,构造函数也是函数,任何函数使用 new 那么就可以作为构造函数,不通过 new 来调用那么它就是普通函数 缺点: A 每个方法在进行实例化的时候都会创建一遍 function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.sayName = fucntion(){ alert(this.name); } } var person1 = new Person("Nicholas",22,"Engineer"); var person2 = new Person("Nicholas",35,"Engineer"); alert(person1.constructor == Person); // true alert(person2.constructor == Person); // true alert(person1.sayName == person2.sayName) // false 3、原型模式 我们创建的每一个函数都有一个 prototype (原型) 属性,这个属性时一个指针,指向一个对象,这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。 使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中。 function Person(){ } Person.prototype.name = "Tom"; Person.prototype.age = 29; Person.prototype.job = "Teacher"; Person.prototype.sayName = function(){ alert(this.name) }; var person1 = new Person(); var person2 = new Person(); alert(person1.sayName == person2.sayName) // true 更简单的原型语法 不过这种方法因为是字面量创建对象,而不是函数,不是函数的话没有 constructor 属性,使用字面量创建对象的时候就没有该属性, 所以一般字面量都会把 constructor 属性给加上。 function Person(){ } Person.prototype = { constructor : Person, name : "Tom", age : 29, job : "Teacher", sayName : function(){ alert(this.name); } } 4、组合使用构造函数模式和原型模式 构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。结果每个实例都会有自己的一份实例属性副本,但是又共享者对方法的引用。最大限度节省内存。 function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.friends = ["A","B","C"]; } Person.prototype = { constructor : Person, sayName : function(){ alert(this.name); } } 5、动态原型模式 function Person(name,age,job){ this.name = name; this.age = age; this.job = job; if(typeof this.sayName != "function"){ Person.prototype.sayName = fucntion(){ alert(this.name); } } }
相关文章推荐
- js中创建对象的几种方式示例介绍
- JS创建对象的几种方式
- JS创建对象的几种方式
- js创建对象的几种常用方式小结(推荐)
- JS中创建对象的几种方式。
- JS 创建对象的几种方式
- js创建对象的几种方式
- JS创建对象的几种方式
- js创建对象的几种常用方式小结(推荐)
- js创建对象的几种常用方式小结(推荐)
- js创建对象的几种常用方式小结(推荐)
- JS 创建对象的几种方式
- js创建对象的几种方式
- javascript学习(十五):js中对象的常用的几种创建方式
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第30讲_类和对象细节_创建对象的几种方式_js对象内存分析_学习笔记_源代码图解_PPT文档整理
- js几种创建对象方式及比较
- js中创建对象的几种方式
- js中创建对象的几种方式示例介绍
- JS创建对象的几种方式
- js创建对象的几种方式