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

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可以调用,这里面牵扯到什么问题呢?没想明白,求教

阅读 2k
1 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题