首页 > 当对象内部声明的属性为非函数时,该属性值无法调用该对象内部的其他函数

当对象内部声明的属性为非函数时,该属性值无法调用该对象内部的其他函数

var User = {
    getName: function() {
        return 'Mac';
    },
    // 错误的调用
    name: User.getName(),
    // 正确的调用
    nameFun: function() {
        return this.getName();
    }
};

console.log(User.name);    // 报错
console.log(User.nameFun); // 正常返回

我的问题是只能在函数内部才能调用其他函数吗?
User里的name非函数,无法直接调用getName()
nameFun可以调用,这里面牵扯到什么问题呢?没想明白,求教


name 属性的绑定发生在 User 对象创建的时刻。而此时 User 还未被绑定,依然为 undefined。所以实际上在 User.name 时调用的是 undefined.getName()。自然会报错。

【热门文章】
【热门文章】