zoukankan      html  css  js  c++  java
  • 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,'打印')

    或者可以利用闭包

    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,'打印')
  • 相关阅读:
    【转】 MySQL高级知识(一)——基础
    inline元素的间距问题
    ES6对于数组的扩展
    JavaScript的垃圾回收机制
    call() apply() bind()
    防抖和节流
    Promise
    js的事件机制
    Javascript异步操作的异常处理
    JavaScript的事件执行机制及异步
  • 原文地址:https://www.cnblogs.com/yeduweichengzhaoyu/p/12058641.html
Copyright © 2011-2022 走看看