为什么点符号在我的属性访问中失败?

时间:2015-03-06 10:17:04

标签: javascript

我从书中学习:Javascript的好部分。我遇到了以下代码扩充函数定义。

Function.prototype.method = function(name, func){
    this.prototype[name] = func;
    return this;
};

但是,如果我将this.prototype[name]替换为this.prototype.name,则Firebug会出现错误,我想知道错误在哪里?提前谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

this.prototype.name相当于this.prototype["name"]而不是this.prototype[name]

答案 1 :(得分:2)

您正尝试从name访问属性this.prototype,其中name是变量。如果您使用点表示法,它会尝试查找文字字符串'name'作为Function.prototype的属性,当然无法找到它。如果属性名称是变量,请使用[name]

答案 2 :(得分:1)

在点的情况下,名称按字面处理,并且在您的情况下未定义。相反,括号中的名称被视为对字符串Object的引用。