zoukankan      html  css  js  c++  java
  • BOM详解

    1.WINDOW对象

    BOM的核心对象是WINDOW,它表示一个浏览器的实例。在浏览器中,window对象有双重角色,它既是通过

    JavaScript访问浏览器的一个接口,又是ECMAScript规定的Global对象。这意味着,在网页中定义任意一个对象,变量和函数,都以WINDOW作为其Global对象,因此有权访问parseInt()等方法。

    1.1全局作用域

    由于WINDOW对象同时扮演者ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量,函数都会变成window对象的属性和方法,下面来来例子。

    var age=22;
    function sayAge()
    {
        alert(this.age);
        
    }
    
    alert(window.age);  //22
    sayAge();     //22
    window.sayAge();   //22
    View Code

       我们在全局作用域中定义了一个变量age和一个函数sayAge(),它们被自动归在了window对象名下。于是,可以通过window.age访问变量age.可以通过window.sayAge()访问函数sayAge().由于sayAge()存在于全局作用域中,因此this.age被映射到window.age,最终显示的仍然是正确的结果。

       抛开全局变量会成为window对象的属性不谈,定义全局变量与在WINDOW对象上直接定义属性还是有点差别:全局变量不能通过delete操作符删除,而直接在window对象上定义的可以。

    例如:

    var age=44;
    window.color="red";
    
    delete window.age;
    
    delete.window.color;
    
    alert(window.age); //44
    
    alert(window.color); //undefined
    View Code

       刚才使用var语句添加的window属性有一个名为[[configurable]]的特性,这个特性的值被设置为false,因此这样定义的属性不可以通过delete操作符删除。IE8以及更早版本在遇到使用delete删除window属性的语句时,不管该属性是如何创建的,都会抛出错误,以示警告。IE9以及更高版本不会抛出错误。

      另外,还要记住一件事:尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在,例如:

    //这里会抛出错误,因为oldValue未定义
    var newValue=oldValue;
    
    //不会抛出错误,这是一次属性的查询,newValue的值是undefined
    var newValue=window.oldValue;
    

     注意:Window Moblie 平台的IE浏览器,不允许通过window.prototype=value之类的形式

    直接在window对象上创建新的属性或方法。可是,在全局作用域中声明的所有变量和函数,照样会变成WINDOW对象的成员。

  • 相关阅读:
    《神经网络和深度学习》系列文章三:sigmoid神经元
    《神经网络和深度学习》系列文章二:感知机
    《神经网络和深度学习》系列文章一:使用神经网络识别手写数字
    初遇python进程
    python-网络编程
    python常用模块详解2
    python根据正则表达式的简单爬虫
    python常用模块详解
    python-模块详解
    python-面向对象-内置方法补充
  • 原文地址:https://www.cnblogs.com/kmsfan/p/3738544.html
Copyright © 2011-2022 走看看