专注于WEB前端开发,HTML基础知识,CSS基础知识,HTML5和CSS3,Javascript,Jquery,Jquery插件,移动开发,微信开发等技术话题

当前位置:CSSTOP主页 > JS函数 > 正文

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做一些操作
  }