window对象总结

本地对象:独立于宿主环境的ECMAScript实现提供的对象。常见的本地对象有:Object、Function、Array、String、Boolean、Number 、Date、RegExp、Error等。

内置对象:内置对象不需要实例化,主要是Global对象和Math对象;

Global对象:它是ECMAScript中最特别的对象,因为实际上它根本不存在,但大家要清楚,在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。类似于parseFloat( )、parseInt( )、escape( )、unescape( )、isFinite( )、isNaN( )、eval( )、encodeURI()和 encodeURIComponent(),看起来都是函数,而实际上,它们都是Global对象的方法。

window对象:ECMAScript 没有指出如何直接访问 Global 对象,但浏览器都是将Global对象作为window 对象的一部分加以实现的。因此,在全局作用域中声明的所有变量和函数,就都成为了 window对象的属性。

Global对象和Window对象的对比

而Global对象是在任何环境中都存在的。

全局函数和window对象的函数不一样。全局函数不属于任何一个内置对象。

跟继承没有关系,可以认为浏览器默认提供使用的对象,都放到了Global对象中,而window对象又恰好就是这个Global对象。实际上,在浏览器的内部实现中,隐藏了真正的Global对象,而把window对象作为了Global对象的替身。一切对Global对象的操作(间接操作),都会映射到window对象上,反之亦然。这样window对象就成了Global对象的替身。而window对象同时又作为Global对象的一个属性。这样,真正的Global对象就被雪藏了。

实际应用:

1.加密js中,如果想对Global对象对象加密,可以用一个特殊的变量注册到window里。例如:

window['_ab'] = window['parseInt']
var a = _ab('234');
console.log(a,'打印');

这样就实现了一个简单的js加密。常用的,可以使用这种方式加密的:Date,Math,parseInt,parseFloat,Array等

 

2.对js对象方法的加密。例如:getTime方法

 window['_df'] = window['Date']
 window["_w3"] = 'getTime'
 var b = new _df()
 var c = b[_w3]()
console.log(c,'打印')

或者可以利用闭包

扫描二维码关注公众号,回复: 8228224 查看本文章
window['_df'] = window['Date']
window["_w3"] = _vP('getTime')
 function _vP (_BT) {
        return function () {
            return _BT
        }
   }
 var b = new _df()
var c = b[_w3()]()
console.log(c,'打印')

猜你喜欢

转载自www.cnblogs.com/xuexia/p/12058641.html
今日推荐