JavaScript创建对象总结
2014-08-17 22:59
399 查看
工厂模式
function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); } return o; } var person1=createPerson("Nicholas",29,"Software Engineer"); var person2=createPerson("Greg",27,"Doctor");
构造函数模式
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.sayName=function(){ alert(this.name); } } var person1=new Person("Nicholas",29,"Software Engineer"); var person2=new Person("Greg",27,"Doctor");
原型模式
先看代码实现:function Person(){} Person.prototype.name="Nicholes"; Person.prototype.age=29; Person.prototype.job="Software Engineer"; Person.prototype.sayName=function(){ alert(this.name); }; var person1=new Person(); var person2=new Person(); alert(person1.name); //Nicholes
然后是构造函数、原型、对象之间的关系:
注意,这种情况下,新对象的属性和方法都是共享的。所以:
person1.name="ll"; alert(person2.name); //ll
组合使用构造函数模式和原型模式
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.friends=["Nikc","Bob"]; } var person3=new Person("Person3",22,"cop"); Person.prototype={ constructor:Person, sayName:function(){ alert(this.name); } } var person1=new Person("person1",20,"doc"); var person2=new Person("person2",30,"tea"); person1.friends.push("Jack");
动态原型模式
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; if(typeof Person.prototype.sayName!="function"){ Person.prototype.sayName=function(){ alert(this.name); } } }
动态原型模式是上面组合模式的进一步优化,看起来比较顺眼。
尽量使用这种方法。这样创建出来的对象,属性不共享,方法共享,并且不会再创建对象时在原型那里重复创建sayName方法。
记住往原型那里添加东西时不能使用 重写原型 的方式 ,因为第一个构造出来的对象无法和重写的新原型建立联系。
寄生构造函数模式
function SpecialArray(){ var values=new Array(); values.push.apply(values,arguments); values.toPipeString=function(){ return this.join(" | "); } return values; } var colors=new SpecialArray("red","blue","green");
没搞懂有什么用-_-||,建议不使用。
稳妥构造函数模式
function Person(name,age,job){ var o=new Object(); o.sayName=function(){ alert(name); } return o; } var person1=Person("Jack",20,"Doctor");
此时除了调用person1的sayName方法外,无法访问person1的name属性。对安全性有很高要求时,使用这种方法。
相关文章推荐
- javascript中创建对象的几种方法总结
- JavaScript中创建类/对象的几种方法总结
- Javascript 创建对象方法的总结
- Javascript 创建对象总结
- JavaScript创建对象方式总结
- javascript中创建对象的几种方法总结
- javascript创建对象总结(javascript高级程序设计)
- Javascript 创建对象方法的总结
- 你不知道的JavaScript--Item25 创建对象(类)的8种方法总结
- 你不知道的JavaScript--Item25 创建对象(类)的8种方法总结
- Javascript 创建对象方法的总结
- Javascript 创建对象方法的总结
- JavaScript总结--创建对象
- javascript中创建对象的几种方法总结
- 面向对象 - javascript创建对象模式总结
- JavaScript创建对象总结
- JavaScript总结--创建对象(二)
- javascript高级程序设计一书----关于创建和对象继承的总结
- JavaScript学习--Item25 创建对象(类)的8种方法总结
- javascript中创建对象的方式总结