javascript严格模式下oop函数的全局初始化
global initalization of oop function in javascript strict mode
我在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函数会得到一些参数,这些参数必须由用户输入
如果你想从一个函数初始化公共对象(尽管我不知道你为什么要这么做),你可以在公共作用域中声明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
声明变量时,它可以防止创建隐式全局变量。如果您显式地声明变量,那么就可以开始了。
慢慢来,阅读以下内容:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode
此外,我建议您将代码封装在自动执行的函数中,以免污染全局范围,并避免与站点中可能运行的其他脚本发生冲突。理想情况下,整个应用程序应该只存在于一个全局变量中。有时你甚至可以避免这种情况。类似以下内容:
(function () {
'use strict';
// the rest of your code
})();
相关文章:
- 正在全局范围中查找JavaScript函数
- 在javascript函数中设置全局变量
- javascript无法重新定义函数内部的全局对象
- javascript 中的全局函数
- cordova:例外:财产'requestFileSystem'的[对象全局]不是函数
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- Javascript,从静态函数中打印全局对象
- 全局窗口热键在最小化chrome窗口时调用js函数
- 创建要在其他函数中使用的全局变量
- 从全局函数调用Ember控制器上的方法
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- jQuery-函数全局变量
- jQuery - 如何使这个javascript函数全局化,以便其他函数可以访问它
- JS函数/全局变量的作用域
- Javascript;如何使函数全局可访问
- 全局在什么(函数(全局){一些代码.(这个)做
- 如何使用 (函数(全局) { .. })(这);.
- 我如何使变量newUser定义在一个函数全局
- 函数(全局){..}(this)的工作方式
- 我如何使我的变量包含在这个函数全局