2017-08-04 43 views
1

我想清理我的代码位,所以我创建一些小物件或库(叫什么你怎么想),如:不能内部函数访问功能的JavaScript

function myLib() { 
    this.get = function() { ... }; 
    ... 
}; 

问题是,当我尝试称它为myLib.get()。它引发以下错误:

Uncaught TypeError: myLib.get is not a function 

我试图调用封装成$(document).ready(),但它并没有帮助。

你能帮助我吗?

谢谢!

+0

myLib.get()中的'myLib'是什么? –

回答

2

MYLIB用于 “libary”,并要拨打这是“获得”库里的方法。

静态实例对你来说比较好。

const myLib = { 
    get:function(){}, 
    get2:function(){} 
    ... 
}; 
myLib.get(); 
myLib.get2(); 
1

你应该使用MYLIB作为构造,即:

var lib = new myLib(); 
lib.get(); 
2

so I create some small objects or libraries (call it how you want)

在你的情况,你要创建一个构造函数,myLib是一个构造,而不仅仅是function,你不能访问函数属性和方法直接,这就是为什么你得到了异常。

因此,您需要获得myLib的实例才能调用get方法或访问其任何成员(方法)。

function myLib() { 
 
    this.get = function() { console.log("get called!!"); }; 
 
}; 
 
let lib = new myLib(); 
 
lib.get();

注:

而且从MDN Reference for Functions你可以看到:

The this keyword does not refer to the currently executing function, so you must refer to Function objects by name, even within the function body.