论Javascript如何防止污染全局作用域
/**
* ==============================================
* 会污染全局作用域的编码方式
* ==============================================
*/
/*
alert("NaN is NaN: " + isNaN(NaN));
function x() {
this.isNaN = function() {
return "not anymore!";
};
}
// alert!!! trampling the Global object!!!
x();//一执行就污染了全局作用域中的函数isNaN
alert("NaN is NaN: " + isNaN(NaN));
*/
/**
* ==============================================
* 利用简易名称空间,防止污染全局作用域的编码方式
* ==============================================
*/
alert("NaN is NaN: " + isNaN(NaN));
var RootObj = {};//根对象 超简易名称空间
RootObj.fun = function (){
this.isNaN = function(strTemp){
return strTemp;
}
};
RootObj.fun.prototype.name = function(){
return "testName";
}
RootObj.fun();//这样就不怕污染全局作用域了 就是window啦
var obj = new RootObj.fun();
alert("Obj.name:" + obj.name());
alert("NaN is NaN: " + isNaN(NaN));//可以正常使用了
alert("Obj.isNaN:" + obj.isNaN(NaN));
/**
* 转载请注明出处:
* 作者:蓝色随想
* 主页:http://bluethinking.cnblogs.com
*/
* ==============================================
* 会污染全局作用域的编码方式
* ==============================================
*/
/*
alert("NaN is NaN: " + isNaN(NaN));
function x() {
this.isNaN = function() {
return "not anymore!";
};
}
// alert!!! trampling the Global object!!!
x();//一执行就污染了全局作用域中的函数isNaN
alert("NaN is NaN: " + isNaN(NaN));
*/
/**
* ==============================================
* 利用简易名称空间,防止污染全局作用域的编码方式
* ==============================================
*/
alert("NaN is NaN: " + isNaN(NaN));
var RootObj = {};//根对象 超简易名称空间
RootObj.fun = function (){
this.isNaN = function(strTemp){
return strTemp;
}
};
RootObj.fun.prototype.name = function(){
return "testName";
}
RootObj.fun();//这样就不怕污染全局作用域了 就是window啦
var obj = new RootObj.fun();
alert("Obj.name:" + obj.name());
alert("NaN is NaN: " + isNaN(NaN));//可以正常使用了
alert("Obj.isNaN:" + obj.isNaN(NaN));
/**
* 转载请注明出处:
* 作者:蓝色随想
* 主页:http://bluethinking.cnblogs.com
*/