我在 new
线上收到了 Uncaught TypeError: object is not a function
错误
它只能运行,如果我这样做 var item = mylib;
但是,我不太清楚这里的问题是什么。
(function(window){
function mylib (){
var Library={};
Library.localVar1="One";
Library.localVar2="Two";
Library.func1 = function (){
console.log("func1 output"+Library.localVar1)
return true;
}
Library.func2 = function (){
Library.func2Var1 = "func2One";
console.log("func2 output"+Library.localVar2)
return Library.func2Var1;
}
return Library;
}
//define globally if it doesn't already exist
if(typeof(Library) === 'undefined'){
window.mylib = mylib();
}
else{
console.log("Library already defined.");
}
})(window);
var item = new window.mylib;
console.log(item.localVar2,"var2");
console.log(item.func2(),"func2");
console.log(item.func1(),"func1");
最佳答案
当您使用var item = new window.mylib;
时,我假设您想从Library
创建一个新实例。
但是在您的代码中,Library
是一个Object
,而不是构造函数,构造函数应该是一个Function
。所以你会得到这个错误。
(function(window){
function mylib (){
var Library = function() {
// Set self's variable
this.localVar1="One";
this.localVar2="Two";
}
// Use prototype to define the shared function.
Library.prototype.func1 = function (){
console.log("func1 output"+this.localVar1)
return true;
};
Library.prototype.func2 = function (){
Library.func2Var1 = "func2One";
console.log("func2 output"+this.localVar2)
return Library.func2Var1;
};
return Library;
}
//define globally if it doesn't already exist
if(typeof(Library) === 'undefined'){
window.mylib = mylib();
}
else{
console.log("Library already defined.");
}
})(window);
var item = new window.mylib(); // Create a instance of Library
console.log(item.localVar2,"var2");
console.log(item.func2(),"func2");
console.log(item.func1(),"func1");
关于javascript - 具有 close 的库无法根据其构造函数创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591825/