在下面的代码中
(function x() {
var j = function() { alert("234234"); }
return {
s: j
}
})()
var x1 = new x();
x1.s();
如何调用方法j()?或者之前我应该问,有没有办法创建函数x()的实例,因为这就是正在发生的事情。请参阅小提琴http://jsfiddle.net/e5k6bdvn/
答案 0 :(得分:7)
new
调用它)这样:
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();
或者,如果要创建构造函数:
这样:
function x () {
};
x.prototype.s = function () {
alert("234234");
}
var x1 = new x();
var x2 = new x();
x1.s();
答案 1 :(得分:0)
如@epascarello所述,很难说你问题的背景是什么。
如果x
的含义是多次返回对象,则不应立即调用它。相反,你只需要声明它:
function x () { return { j: function () { alert("234234") } } }
然后随时调用它,并调用j
。
var x1 = x();
x1.j();
如果您计划仅使用x
一次,最好立即调用它,但您也需要立即使用j
的呼叫。
(function () {
return {
j: function () {
alert("234234")
}
}
})().j();