当前位置: 代码迷 >> JavaScript >> 创建js对象时,为什么不能在另一个已定义函数中使用已定义函数?
  详细解决方案

创建js对象时,为什么不能在另一个已定义函数中使用已定义函数?

热度:85   发布时间:2023-06-07 11:45:05.0

代码像这样

var ob = {
    a: function() {
        b()
    },
    b: function() {
        console.log("hi")
    }
};

如您所见,您做不到

ob.a() //returns error

有人可以深入解释原因吗?

因为b在当前作用域中不存在(在这种情况下为全局范围)。

但是,这可行:

var ob = {
  a: function () {
    this.b()
  },
  b: function () {
    console.log('hi')
  }
};

因为this是指ob对象。

b是称为ob的对象的属性。 话虽如此,如果您使用

ob.b

而不是b您将解决您的问题。

var ob = {
    a:function(){ 
        ob.b() 
    },
    b:function(){
        console.log("hi")
    }
};

实现此目的的另一种方法是使用this运算符。

var ob = {
    a:function(){ 
        this.b() 
    },
    b:function(){
        console.log("hi")
    }
};

this包含对您定义的对象的引用。 因此,使用它可以访问is属性。 这是第一种更好的方法,因为如果您稍后决定将ob的名称更改为obj ,则不会在两个地方进行更改。

在任何地方都没有定义函数b ,它是对象ob的属性,因此您可以在a内部a其称为this.b

var ob = {
    a: function () {
        this.b();
    },
    b: function () {
        console.log("hi");
    }
};

ob.a();

您也可以作为ob.b()访问b

  相关解决方案