以下是我陷入困境的示例代码:
<script>
var mod = (function(){
var inn1;
function innfunc(){
}
}()); //mod is self expression function
</script>
假设HTML包含这个javascript代码,我想打开我的Java控制台并调用innfunc()
或变量inn1
,然后我可以写什么?
或许类似于:mod.innfunc()
?
答案 0 :(得分:1)
您必须通过从函数内部返回来公开“公共接口”:
return {
inn: inn1,
innfunc: innfunc
}
然后,您可以使用mod.inn
和mod.innfunc
访问它们。
答案 1 :(得分:0)
试试这个:
var mod = function(){
this.inn1 = "Hello";
this.innfunc = function(){
console.log('Here');
}
};
var x = new mod();
console.log(x.inn1);
x.innfunc();
您可以使用它来使变量和方法公开
答案 2 :(得分:0)
您已执行了匿名函数,并将该函数的结果分配给mod
。 您无权再访问该匿名函数或其任何属性。
如果您想稍后访问其任何属性,有多种方法可以执行此操作。其中之一是:
返回具有此功能之外所需属性的对象
var mod = (function() {
var inn1 = 'somevalue';
var innfunc = function() {
};
return {
inn1: inn1,
innfunc: innfunc
};
}()); //mod is self expression function
现在,您可以mod.innfunc()
答案 3 :(得分:0)
+1其他人说的话。我猜他们打败了我,哈哈。
我添加了一个你可以在函数中保密的东西的例子:
var mod = (function() {
var publicText = 'Public!';
var privateText = 'Private';
var func1 = function() {
console.log('hi');
};
var func2 = function() {
console.log('there');
};
return {
hi: func1,
there: func2,
publicText: publicText
};
})();
mod.hi();
mod.there();
console.log(mod.publicText);
// This will fail, since the object.key privateText was never defined
console.log(mod.privateText);
希望这有帮助!