javascript - 如何在return中调用工厂函数方法?

标签 javascript

function shared() {
  return {
    lot: function() {
      console.log('crawling');
    },
    pot: function() {
      lot();
      console.log("crawled");
    }
  }
}
var share = new shared();
share.pot();

throw

error lot is not a function

如何调用lot方法

我已经有这样的现有函数结构,如何在不更改结构的情况下调用很多方法

最佳答案

this.lot();

您位于对象内部(!= 范围)。您试图获取作用域内的函数,但它不在作用域内。它是同一个对象的一部分,所以使用这个...

Scope:
window -> lot 
window -> pot //lot isnt in the scope, just window is

this:
 pot -> (this = Object ) this.lot = Object.lot

正如工程师所指出的,您不需要 new,因为它不是构造函数:

 share=shared();
 share.pot();

关于javascript - 如何在return中调用工厂函数方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346538/

相关文章:

javascript - 如何对我的仪表板进行 API 调用,以便同时获取所有不同组件的数据

javascript - 在 jquery 就绪函数中声明函数的最佳实践

javascript - 未捕获的类型错误 : Chart is not a constructor when using Chart. js

javascript - 创建一组元素 JointJS

javascript - 自定义的 Javascript 函数没有像我预期的那样工作?

javascript - 如何阅读和理解 ExtJS 源代码?

Javascript 对象混淆

javascript - 从 jQuery 中的字符串获取所有 anchor

javascript - 将值写入表单字段 - 值写入多次

javascript - Google Closure 编译器解析错误 : invalid property id for `css({float:' left'})`