将自定义对象赋值给prototype的结果

给构造函数添加一个方法我们通常这么做:

function Class()
{
    this.Name = "Class";
}
Class.prototype.getName = function(){ return this.Name; };

也有人是直接将一个自定义对象赋值给prototype:

function Class()
{
    this.Name = "Class";
}
Class.prototype = {
    getName : function(){ return this.Name; }
};

暂时没发现有什么使用上的问题,但还是发现了一点不同:我们知道,原型对象默认有一个属性constructor,他指向构造函数本身,测试一下:

function Class()
{
    this.Name = "Class";
}
Class.prototype.getName = function(){ return this.Name; };

alert(Class.prototype.constructor);

结果显示:

引用内容 引用内容
function Class()
{
    this.Name = "Class";
}

function Class()
{
    this.Name = "Class";
}
Class.prototype = {
    getName : function(){ return this.Name; }
};

alert(Class.prototype.constructor);

结果显示:

引用内容 引用内容
function Object() {
    [native code]
}

这和Object.prototype.constructor的结果是一样的,也就是说:将自定义对象赋值给prototype后,改变了原型对象constructor属性的值,他不再是表示prototype所对应的构造函数,其值是超类(Object)的构造函数。

上一篇: 奇特的原型对象
下一篇: 终于装上了IETester
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4892
发表评论
登录后再发表评论!