标签:javascript 工厂模式 指针 对象
在JavaScript中创建对象由很多种方式,如工厂模式、构造函数模式、原型模式等:
<pre name="code" class="html">//工厂模式
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 person = createPerson('dw',20,'IT');
其等价的原型模式:
function Person()
{
}
Person.prototype =
{
name:"dw",
age:20,
job:"IT",
sayName:function()
{
alert(this.name);
}
};
var person2 = new Person;var person3 = new Person; person2.name; //dw person3.name; //dw
alert(Person.prototype.constructor); //返回Person的构造函数 //Person.prototype.constructor只是指向Person的一个指针,与Person并不相等 //以下均返回false alert(Person.prototype.constructor === Person) alert(Person.prototype.constructor == Person)
在每一个实例的内部都有一个指针指向原型对象,在ECMA-262的第五版称之为[[prototype]]。在原型模式下创建的实例与构造函数没有直接的关系。
虽然无法访问[[prototype]],但可以用isPrototypeOf()方法来确定对象是否是原型对象。
alert(Person.prototype.isPrototypeOf(person2)); //true alert(Person.prototype.isPrototypeOf(person3));//true
alert(Object.getPrototypeOf(person2) == Person.prototype); //true alert(Object.getPrototypeOf(person2).name); //dw
person2.name="qs"; alert(person2.name);//qs
<pre name="code" class="html">person2.name = null; alert(person2.name); //nulldelete person2.name;alert(person2.name); //dw
浅谈JavaScript中的原型模式,布布扣,bubuko.com
标签:javascript 工厂模式 指针 对象
原文地址:http://blog.csdn.net/u011043843/article/details/38417405