javascript中创建自定义类型的最常见的方式_组合使用构造函数模型和原型模式,动态原型模式
2012-03-22 16:24
1071 查看
1.组合使用构造函数模式和原型模式。
这样每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。
实例属性都是在构造函数中定义的,而由所有实例共享的属性constructor和方法sayName()则是在原型中定义的。
2.动态原型模式
动态原型模式把所有的信息都封装在构造函数中,而通过在构造函数中初始化原型,又保持了同时使用构造函数和原型的优点。
这里只在sayName()方法不存在的情况下,才会将它添加到原型中。这里对原型中所作的修改,能够立即在所有实例中得到反映。
注意:使用动态原型模式时,不能使用对象字面量重写原型,因为如果在已经创建了实例的情况下重写原型,那么就会切断现有实例与新原型之间的联系。
这样每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。
//构造函数模式用于定义实例属性 function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.friend=["xj","nn"]; } //原型模式用于定义方法和共享属性 Person.protoype={ constructor:Person, sayName:function(){ alert(this.name); } }
var person1=new Person("AA",22,"Engineer"); var person2=new Person("BB",33,"Software"); person1.friends.push("Van"); alert(person1.friends); //"xj,nn,Van" alert(person1.friends);//"xj,nn"
实例属性都是在构造函数中定义的,而由所有实例共享的属性constructor和方法sayName()则是在原型中定义的。
2.动态原型模式
动态原型模式把所有的信息都封装在构造函数中,而通过在构造函数中初始化原型,又保持了同时使用构造函数和原型的优点。
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; //如果不是方法,则把它改为方法,并添加到原型中 if(typeof this.sayName!="function"){ Person.prototype.sayName=function(){ alert(this.name); }; } } //使用 var person=new Person("alal",22,"Software Engineer"); person.sayName();
这里只在sayName()方法不存在的情况下,才会将它添加到原型中。这里对原型中所作的修改,能够立即在所有实例中得到反映。
注意:使用动态原型模式时,不能使用对象字面量重写原型,因为如果在已经创建了实例的情况下重写原型,那么就会切断现有实例与新原型之间的联系。
相关文章推荐
- JavaScript之面向对象学习七(动态原型模式、寄生构造函数模式、稳妥构造函数模式创建自定义类型)
- 组合使用构造函数模式和原型模式创建自定义类型
- Javascript---字面量创建对象、组合构造函数+原型模式、动态原型模式
- JavaScript 创建对象--组合使用构造函数模式和原型模式
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- javascript中组合使用构造函数模式和原型模式创建对象
- javascript创建对象——组合使用构造函数和原型模式
- 组合使用构造函数模式和动态原型模式、寄生构造函数模式(创建具有额外方法的特殊数组)
- JS面向对象的几种创建方式:工厂模式、构造函数模式、原型模式、混合模式、动态原型模式
- JavaScript面向对象 组合使用构造函数模式和原型模式
- 在立即执行函数内组合使用构造函数模式和原型模式创建对象,实现模块化开发(以daterangepicker.js为例)
- JS创建对象之组合使用构造函数模式和原型模式
- js中组合使用构造函数模式和原型模式创建对象
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- JavaScript面向对象 组合使用构造函数模式和原型模式
- javascript组合使用构造函数模式和原型模式实例
- 创建对象-组合使用构造函数和原型模式
- 举个构造函数和原型模式组合使用定义用户类型的例子,
- JavaScript学习-组合使用构造函数和原型模式