我从书中学习:Javascript的好部分。我遇到了以下代码扩充函数定义。
Function.prototype.method = function(name, func){
this.prototype[name] = func;
return this;
};
但是,如果我将this.prototype[name]
替换为this.prototype.name
,则Firebug会出现错误,我想知道错误在哪里?提前谢谢你的帮助。
答案 0 :(得分:2)
this.prototype.name
相当于this.prototype["name"]
而不是this.prototype[name]
。
答案 1 :(得分:2)
您正尝试从name
访问属性this.prototype
,其中name是变量。如果您使用点表示法,它会尝试查找文字字符串'name'
作为Function.prototype
的属性,当然无法找到它。如果属性名称是变量,请使用[name]
。
答案 2 :(得分:1)
在点的情况下,名称按字面处理,并且在您的情况下未定义。相反,括号中的名称被视为对字符串Object的引用。