• 读书笔记JavaScript中的全局对象


    对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用。这个JavaScript自身提供的全局对象的功能包括:

    1.全局对象拥有一些常用的属性值。比如undefined、Infinity以及NaN。
    2.全局对象拥有一些常用的属性对象。比如Math、JSON和Number对象均为该全局对象的属性。
    3.全局对象提供一些全局函数供调用。比如isNaN()、isFinite()、parseInt()和eval()等。
    4.全局对象提供一些全局构造器(constructor),也即全局类。比如Date()、RegExp()、String()、Object()和Array()等。

    除了JS全局对象,对于运行在浏览器端的JavaScript程序,还有另一个全局对象:window。window全局对象提供了与当前窗口、页面有关的诸多属性与方法。除了这些与浏览器有关的全局属性和方法,window对象还封装了JS全局对象,并向外暴露JS全局对象的属性与接口;因此,当进行浏览器端JavaScript编程时,只需关心window全局对象即可。

    对于JavaScript程序中的this,如果this不属于任何function,那么这个this就指代JS全局对象;如果是浏览器端运行的JS程序,那么这个this就指代window全局对象。

    如果这个this属于某个function,那么this指代的就是调用该function的对象。若这种情况下function只是一个普通的函数,而不是某个类的方法,那么this的指代存在两种可能:

    1.在ECMAScript 3标准,以及ECMAScript 5标准的非严格模式下,this指代全局对象。
    2.在ECMAScript 5标准的严格模式下,this指代undefined。

    根据这一特性,可以使用以下代码来判断当前是否处于严格模式:

    代码如下:

    var strict = (function(){return !this;}());


    如果在JavaScript程序中创建了全局变量,那么这个全局变量会成为全局对象中的一个属性。

    实验

    代码如下:

    var a = this;
    console.log(a);//window object
    console.log(a.outerWidth);//access window object's attribute
    console.log(a.isNaN);//access JS global object's attribute

    x = "test";
    console.log(a.x);//access newly created global variable value

  • 相关阅读:
    此类目的是防治序列化Json字符串时的循环引用问题-------最好解决方案
    Json.Net学习笔记
    深入理解javascript原型和闭包(完结)
    SDL 威胁建模工具入门 threat modeling tool
    .NET 4.0 中的契约式编程
    MVC调用部分视图PartialView
    visual studio 常识
    【阿里云产品评测】小鸡咕咕的初体验
    【阿里云入门产品免费试用半年】加入微博话题+“最”炫推荐理由,得精美小礼物
    镜像公测招募啦!!!用镜像开通云服务器,限时免费体验!!
  • 原文地址:https://www.cnblogs.com/nuoyiamy/p/5213807.html
Copyright © 2020-2023  润新知