Javascript - 如何在自调用函数中调用方法?
Javascript - How to invoke a method inside self invoking function?
在下面的代码中
(function x() {
var j = function() { alert("234234"); }
return {
s: j
}
})()
var x1 = new x();
x1.s();
如何调用方法j()?或者在那之前我应该问,有没有办法创建函数 x() 的实例,因为这就是正在发生的事情。请参阅 fiddle http://jsfiddle.net/e5k6bdvn/
- 不要给自调用函数起一个名字(除了让它更容易在堆栈跟踪中找到它没有什么好处,你当时不应该需要它,而且它在旧的 IE 中会泄漏内存)
- 不要调用自调用函数两次
- 不要将自调用函数视为构造函数(通过
new
调用)
- 捕获自调用函数的return值
这样的:
var x = (function () {
var j = function() { alert("234234"); };
return {
s: j
};
})();
x.s();
或者,如果您想以相同的方式创建多个对象:
- 不要使用自调用函数
- 想打多少次就打多少次
x
这样的:
function x () {
var j = function() { alert("234234"); };
return {
s: j
};
};
var x1 = x();
var x2 = x();
x1.s();
或者,如果你想创建一个构造函数:
- 不要return任何东西
- 使用原型链
这样的:
function x () {
};
x.prototype.s = function () {
alert("234234");
}
var x1 = new x();
var x2 = new x();
x1.s();
正如@epascarello 所述,很难说出你的问题的背景是什么。
如果x
的意思是多次return对象,你不应该立即调用它。相反,您只需声明它:
function x () { return { j: function () { alert("234234") } } }
然后随时调用它,并调用 j
.
var x1 = x();
x1.j();
如果您打算只使用 x
一次,则最好立即调用它,但您也需要立即使用对 j
的调用。
(function () {
return {
j: function () {
alert("234234")
}
}
})().j();
在下面的代码中
(function x() {
var j = function() { alert("234234"); }
return {
s: j
}
})()
var x1 = new x();
x1.s();
如何调用方法j()?或者在那之前我应该问,有没有办法创建函数 x() 的实例,因为这就是正在发生的事情。请参阅 fiddle http://jsfiddle.net/e5k6bdvn/
- 不要给自调用函数起一个名字(除了让它更容易在堆栈跟踪中找到它没有什么好处,你当时不应该需要它,而且它在旧的 IE 中会泄漏内存)
- 不要调用自调用函数两次
- 不要将自调用函数视为构造函数(通过
new
调用) - 捕获自调用函数的return值
这样的:
var x = (function () {
var j = function() { alert("234234"); };
return {
s: j
};
})();
x.s();
或者,如果您想以相同的方式创建多个对象:
- 不要使用自调用函数
- 想打多少次就打多少次
x
这样的:
function x () {
var j = function() { alert("234234"); };
return {
s: j
};
};
var x1 = x();
var x2 = x();
x1.s();
或者,如果你想创建一个构造函数:
- 不要return任何东西
- 使用原型链
这样的:
function x () {
};
x.prototype.s = function () {
alert("234234");
}
var x1 = new x();
var x2 = new x();
x1.s();
正如@epascarello 所述,很难说出你的问题的背景是什么。
如果x
的意思是多次return对象,你不应该立即调用它。相反,您只需声明它:
function x () { return { j: function () { alert("234234") } } }
然后随时调用它,并调用 j
.
var x1 = x();
x1.j();
如果您打算只使用 x
一次,则最好立即调用它,但您也需要立即使用对 j
的调用。
(function () {
return {
j: function () {
alert("234234")
}
}
})().j();