木子屋 Dnawo's BLOG

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

👤 dnawo 📅 2009-07-24 👁 5634 👍 0 💬 0 🔄 来源:本站原创
给构造函数添加一个方法我们通常这么做:

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)的构造函数。

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 奇特的原型对象 下一篇 → 终于装上了IETester