我试图从外部调用一个在窗口对象中定义的函数,但它会抛出错误。
window.vcm = (function() {
"use strict";
function red(){
alert('red');
}
});
vcm.red();//Error at this line...
我是javascript新手OOPS。有人可以告诉我如何在这里调用这个函数。
答案 0 :(得分:1)
vcm
的值没有red
属性。
也许你的意思是这样,其中vcm
是一个具有属性red
的对象,你可以调用它:
window.vcm = {
red: function(){
"use strict";
alert('red');
}
};
vcm
本身也有可能(尽管在某种程度上你没有看到)作为一个函数和,因为它有一个red
属性,功能:
window.vcm = (function() {
"use strict";
var vcm = function() { alert("vcm"); }
vcm.red = function() { alert('vcm.red'); };
return vcm;
})();
vcm(); // "vcm"
vcm.red(); // "vcm.red"
答案 1 :(得分:1)
有两种方法。
方法1:
window.vcm = {
red: function (){
"use strict";
alert('red');
}
};
vcm.red();
方法2:
window.vcm = (function() {
"use strict";
this.red = function(){
alert('red');
}
});
var x = new vcm();
x.red();
答案 2 :(得分:0)
red
仅存在于您分配给window.vcm
的函数内部,并且仅在执行函数时存在。此外,函数没有属性red
。
考虑这个更简单的例子:
function foo() {
function bar() {}
}
bar(); // will throw an error
调用bar
会抛出错误,因为bar
未在调用它的范围内定义。
您似乎想要将对象分配给window.vcm
,其中包含属性red
:
window.vcm = {
red: function (){
"use strict";
alert('red');
}
};
这里我使用对象文字创建一个属性为red
的对象。
更多信息: