创建对象及原型模式
2016-12-28 16:52
246 查看
工厂模式
function createPerson(name,age){
var o=new Object();
o.name=name;
o.age=age;
o.say=function(){
alert(this.name)
};
return o;
}
createPerson('小明','18');
构造函数模式
funciton Person=('name','age'){
this.name=name;
this.age=age;
this.say=say;
}
function say(){
alert(this.name)
}
var person1=Person('小明','18');
构造函数的调用方式,需要创建 Person 对象的新实例,必须使用 new 操作符。
在这里,每个新实例都只会调用同一个 say( ) 方法,避免导致不同实例上的同名函数都是不相等。
在代码读取每个对象的属性的时候,会执行两次搜索,第一次是在实例中找,找到即返回,第二次是在原型对象中找,找到即返回。
原型模式
function Preson(){
}
Person.prototype.name='xiaoming';
Person.prototype.age=18;
Person.prototype.say=function(){
alert(this.name)
}
var person1=new Person();
我们每创建一个函数都会有一个 prototype 属性,这个属性是一个指针,指向这个函数的原型对象。
原型对象里会有一个 constructor 属性,这个属性也是一个指针,指向的构造函数。
使用 new 字符串之后,会把这个构造函数和属性方法及原型对象的属性方法给到实例化出来的新对象。
实例出来的新对象,有个 [[prototype]] 属性(__proto__),这个属性也是一个指针,指向原型对象。
组合使用构造函数模式和原型模式
function Person(name,gae){
this.name=name;
this.age=age;
this.friends=['joey','ross']
}
Person.prototype={
constructor:Person,
say:function(){
alert(this.name);
}
}
var person1=new Person('xiaoming','18');
构造函数用于定义实例属性,原型模式用于定义方法和共享的属性,每个实例对象都会有自己的一份实例属性,同时共享着对方法的引用,最大限度节省了内存。
这个例子中,为了避免重复添加 prototype,这里将 Person.prototype 设置为一个以对象字面量的形式创建的对象,但同时要更改这个对象 constructor 属性,将它的指针指向 Person 构造函数,因为在这里本质上是重写默认的 prototype 对象,因此 constructor 属性也成了新的对象的属性(指向 Objcet 构造函数)。
function createPerson(name,age){
var o=new Object();
o.name=name;
o.age=age;
o.say=function(){
alert(this.name)
};
return o;
}
createPerson('小明','18');
构造函数模式
funciton Person=('name','age'){
this.name=name;
this.age=age;
this.say=say;
}
function say(){
alert(this.name)
}
var person1=Person('小明','18');
构造函数的调用方式,需要创建 Person 对象的新实例,必须使用 new 操作符。
在这里,每个新实例都只会调用同一个 say( ) 方法,避免导致不同实例上的同名函数都是不相等。
在代码读取每个对象的属性的时候,会执行两次搜索,第一次是在实例中找,找到即返回,第二次是在原型对象中找,找到即返回。
原型模式
function Preson(){
}
Person.prototype.name='xiaoming';
Person.prototype.age=18;
Person.prototype.say=function(){
alert(this.name)
}
var person1=new Person();
我们每创建一个函数都会有一个 prototype 属性,这个属性是一个指针,指向这个函数的原型对象。
原型对象里会有一个 constructor 属性,这个属性也是一个指针,指向的构造函数。
使用 new 字符串之后,会把这个构造函数和属性方法及原型对象的属性方法给到实例化出来的新对象。
实例出来的新对象,有个 [[prototype]] 属性(__proto__),这个属性也是一个指针,指向原型对象。
组合使用构造函数模式和原型模式
function Person(name,gae){
this.name=name;
this.age=age;
this.friends=['joey','ross']
}
Person.prototype={
constructor:Person,
say:function(){
alert(this.name);
}
}
var person1=new Person('xiaoming','18');
构造函数用于定义实例属性,原型模式用于定义方法和共享的属性,每个实例对象都会有自己的一份实例属性,同时共享着对方法的引用,最大限度节省了内存。
这个例子中,为了避免重复添加 prototype,这里将 Person.prototype 设置为一个以对象字面量的形式创建的对象,但同时要更改这个对象 constructor 属性,将它的指针指向 Person 构造函数,因为在这里本质上是重写默认的 prototype 对象,因此 constructor 属性也成了新的对象的属性(指向 Objcet 构造函数)。
相关文章推荐
- js中组合使用构造函数模式和原型模式创建对象
- 设计模式 3.4 Prototype(原型)-对象创建模式
- javascript创建对象之动态原型模式(五)
- js 创建对象的三种方式——工厂模式、构造函数模式、原型模式
- js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
- JavaScript高级程序设计之面向对象的程序设计之创建对象之组合使用构造函数模式和原型模式 第6.2.4讲笔记
- 一步步学习javascript基础篇(4):面向对象设计之创建对象(工厂、原型和构造函数等模式)
- JavaScript中创建对象的几种模式(原型)--源自技术
- Javascript---字面量创建对象、组合构造函数+原型模式、动态原型模式
- javascript创建对象之原型模式(三)
- Objective-C设计模式——原型Prototype(对象创建)
- javascript中对象的创建-原型模式2
- 组合使用构造模式和原型模式创建对象
- 对象的创建方法之三---组合使用构造函数模式和原型模式(最常用的模式)
- javascript创建对象之函数构造模式和原型模式结合使用(四)
- 设计模式【1】:原型模式【创建对象】
- 【JS】JavaScript中对象的创建与原型模式
- JavaScript构造函数及原型对象 使用Object或对象字面量创建对象 工厂模式创建对象 构造函数模式创建对象 原型模式创建对象 构造与原型混合模式创建对象
- JS中使用动态原型模式、寄生构造函数模式、稳妥构造函数模式创建对象
- Javascript之创建对象(原型模式)