js属性与变量

对象的属性

属性是由键值对组成的,即属性的名字和属性的值。属性的名字是一个字符串,而值可以为任意的 JavaScript 对象(JavaScript 中的一切皆对象,包括函数)。比如,声明一个对象:
//声明一个对象
    var jack = new Object();
    jack.name = "jack";
    jack.age = 26;
    jack.birthday = new Date(1984, 4, 5);
    //声明另一个对象
    var address = new Object();
    address.street = "Huang Quan Road";
    address.xno = "135";
    //将addr属性赋值为对象address
    jack.addr = address;

这种声明对象的方式与传统的 OO 语言是截然不同的,它给了我们极大的灵活性来定制一个对象的行为。

对象属性的读取方式是通过点操作符(.)来进行的,比如上例中 jack 对象的 addr 属性,可以通过下列方式取得:
    var ja = jack.addr;
    ja = jack[addr];
后者是为了避免这种情况,设想对象有一个属性本身包含一个点(.),这在 JavaScript 中是合法的,比如说名字为 foo.bar,当使用 jack.foo.bar 的时候,解释器会误以为 foo 属性下有一个 bar 的字段,因此可以使用 jack[foo.bar]来进行访问。通常来说,我们在开发通用的工具包时,应该对用户可能的输入不做任何假设,通过[属性名]这种形式则总是可以保证正确性的。

JS属性与变量

JavaScript 引擎在初始化时,会构建一个全局对象,在客户端环境中,这个全局对象即为 window。如果在其他的 JavaScript 环境中需要引用这个全局对象,只需要在顶级作用域(即所有函数声明之外的作用域)中声明:
    var global = this;
我们在顶级作用域中声明的变量将作为全局对象的属性被保存,从这一点上来看,变量其实就是属性。比如,在客户端,经常会出现这样的代码:
    var v = "global";
    var array = ["hello", "world"];
    function func(id){
        var element = document.getElementById(id);
        //对elemen做一些操作
    }

事实上相当于:
    window.v = "global";
    window.array = ["hello", "world"];
    window.func = function(id){
        var element = document.getElementById(id);
        //对elemen做一些操作
    }

猜你喜欢

转载自mr-lee11.iteye.com/blog/2343648