使用Object.hasOwnProperty括号表示法?

时间:2014-09-29 17:36:45

标签: javascript

所以我正在阅读Javascript:The Definitive Guide并正在审核这个简单的功能:

function merge(o, p){
    for(prop in p){
        if(o.hasOwnProperty[prop]) continue;
        o[prop] = p[prop];
    }
    return o;
}

看起来很简单,但是当我运行它时,除非我将o.hasOwnProperty[prop]更改为o.hasOwnProperty(prop),否则它无效。

这对我来说很有意义,因为hasOwnProperty是一个方法。这是否意味着这只是书中的一个错误?我正在阅读第6版,对于那些感兴趣的人,这将在第127页上打印出来。

我怀疑它是,但我只是想确定这个函数没有什么奇怪的东西,我只是不知道它会使它工作。

1 个答案:

答案 0 :(得分:2)

  

这是否意味着这只是书中的一个错误?

是。这真的很令人惊讶。

o.hasOwnProperty[prop]是有效的代码,而不是Flanagan在那里使用的意思。 (它在prop函数对象上查找名为hasOwnProperty变量的属性。)

请告诉我他也在某处宣布prop。它没有在您引用的代码中声明,从而使代码似乎成为The Horror of Implicit Globals的牺牲品。