JavaScript中创建对象的几种模式
2017-02-24 15:26
288 查看
JavaScript中创建对象的几种模式
一:Object构造函数或对象字面量创建单个对象Object构造函数: var peopel = new Object();
peopel.name="Tom";
对象字面量: var people={
name : "Tom"
};
缺点:使用同一个接口创建多个对象,会产生大量的重复代码.
二:工厂模式
考虑到ESMAScript中无法创建类,开发人员发明了一种函数,用函数来封装以特定接口创建对象的细节
function People(name){
var o = new Object();
o.name = name;
return o;
}
var person1 = new People("Tom");
优点:解决了多个相似对象的问题.
缺点:没有解决对象识别的问题(怎么知道一个对象的类型);
三:构造函数模式
function People(name){
this.name = name;
}
var person1 = new People("Tom");
优点:创建自定义的构造函数意味着将来可以将它的实例标识为一种特定的类型.
alert(person1 instanceof People); //true
缺点:每个方法都要在实例上重新创建一遍,但可以通过把函数定义转移到构造函数外部来解决此问题.
function Person(name){
this.name = name;
this.sayName = new Function("alert(this.name)");
}
var person1 = new People("Tom");
var person2 = new People("Bob");
alert(person1.sayName==person2.sayName); //false
这里创建两个完成相同任务的Function实例确实没有必要,所以可以这样写:
function Person(name){
this.name = name;
this.sayName = sayName;
}
function sayName(name){
alert(this.name);
}
但是这样做,全局作用域中定义的函数实际上只能被某个对象调用,让全局作用域有点名不副实;如果需要定义很多方法,那么就需要定义很多全局函数,于是自定义的引用 类型就丝毫没有包装性可言,好在这些问题可以通过原型模式来解决.
四:原型模式
与构造函数不同的是:新对象的这些属性和方法是由所以实例所共享的.
function Person(){};
Person.prototype.name="Tom";
var person1 = new Person();
alert(person1.name); //Tom
五:组合使用构造函数模式和原型模式
构造函数用于定义实例属性;原型模式用于定义方法和共享的属性,这种方式是用来定义引用类型的一种默认模式.
相关文章推荐
- 【JavaScript回顾】对象创建的几种模式
- JavaScript创建对象的几种模式
- JavaScript创建对象的几种模式
- javascript对象的几种模式创建方式
- javascript创建对象的几种模式
- JavaScript创建对象的几种模式比较
- JavaScript中创建对象的几种模式(原型)--源自技术
- javascript(js)创建对象的模式与继承的几种方式
- javascript创建对象的几种模式介绍
- JavaScript创建对象的几种模式
- JavaScript创建对象的几种模式
- javascript创建对象的几种常用模式
- javascript创建对象的几种模式介绍
- javascript创建对象的几种模式
- JavaScript中创建对象的几种模式
- JavaScript 创建对象的几种模式
- 深入理解JavaScript系列(47):对象创建模式(上篇)
- JavaScript 创建类/对象的几种方式
- javascript中创建对象的几种方式。
- 在javascript中创建对象的各种模式