我在这样的javascript中有一个oop函数:
'use strict';
function oopFunc(){
this.oopMethod(){
console.log('hey it works');
}
}
function foo(){
var init = new oopFunc();
init.oopMethod();
}
function bar(){
var again = new oopFunc();
again.oopMethod();
}
我怎样才能将oopFunc对象初始化一次(就像一个全局变量)并使用这样的方法?:
'use strict';
function oopFunc(){
this.oopMethod(){
console.log('hey it works');
}
}
function initOopfunction(){
init = new oopFunc();
}
function foo(){
init.oopMethod();
}
function bar(){
init.oopMethod();
}
我必须将变量参数传递给方法,但我不想每次想要使用它时初始化它的新对象
修改
我需要在其他函数中初始化函数,因为oop函数获取一些必须由用户输入的参数
答案 0 :(得分:2)
如果你想从一个函数初始化公共对象(虽然我没有说明你为什么要这样做),你可以在普通范围内声明var,并从其他地方初始化它。
'use strict';
var myObj;
function ObjConstructor() {
this.hey = function () {alert ('hey');};
}
function init() {
myObj = new ObjConstructor();
}
function another() {
init(); // Common object initialized
myObj.hey();
}
another();
在此处查看:http://jsfiddle.net/8eP6J/
'use strict';
的要点是,当您不使用var
声明变量时,它会阻止创建隐式全局变量。如果明确声明变量,那么你就可以了。
此外,我建议您将代码包装在自动执行的函数中,以免污染全局范围并避免与可能在站点中运行的其他脚本发生冲突。理想情况下,整个应用程序应该只存在于一个全局变量中。有时你甚至可以避免这种情况。如下所示:
(function () {
'use strict';
// the rest of your code
})();