我有以下

    var firstObject = {
        firstName: "James",
        lastName: "Smith",
        nationality: "American",
        age: 12,
        get_age: function(){
            return this.age;
        }
    }
    var secondObject = {
        state: "oregon",
        city: "portland"
    }
    secondObject.__proto__ = firstObject;
    for(var i in secondObject){
        if(secondObject.hasOwnProperty[i]){
            console.log(secondObject[i]);
        }
        else{
            console.log("not my own property: " + secondObject[i]);
        }
    }


secondObject从firstObject扩展。在For In循环中,应根据第一个if条件对州和城市进行分类,而其他所有内容均应按else条件进行分类。当我运行上面的代码时,我所有的属性/函数都是根据else条件分类的。为什么hasOwnProperty方法在所有属性上都返回false?

最佳答案

.hasOwnProperty[i]    (not a property)


应该是

.hasOwnProperty(i)    (It is a method)


您应该使用括号而不是方括号。

09-27 16:04