0

let foo={
  name:"",
  method:function(){
    function bar(){
      return "bar";
    }
    //bar();   //(2)
  }
};
foo.method.bar(); //(1)

(1): throws a Uncaught TypeError: c.method.bar is not a function, 我知道foo.method.bar正在搜索名为barinside的属性键/名称,但这不存在,所以当我从外部访问时method如何调用而不做这个 (2)barfoo

4

1 回答 1

1

鉴于您当前的代码,这是不可能的,因为没有调用任何引用bar仍然 aftermethod的内容,并且因为method也不调用bar自身。

如果您想要这样的东西,请放在bar外部对象上,使其暴露:

let foo = {
  name: "",
  bar() {
    return "bar";
  },
  method: function() {

  }
};
console.log(foo.bar());

理论上可以将bar函数直接放在 上method,但这很奇怪:

let foo = {
  name: "",
  method: function() {

  }
};
foo.method.bar = function() {
  return "bar";
};
console.log(foo.method.bar());

于 2020-09-22T00:12:27.997 回答