《JavaScript语言精粹》第三章-对象

对于丑陋的事物,爱会闭目无视
——威廉-莎士比亚,《维洛那二绅士》

  • 对象是属性的容器,其中每个属性都拥有名字和值。
  • 对象没有类的概念
  • js包含一种原型链的特性,允许对象继承另一个对象的属性。

对象字面量

  • 一个对象字面量就是包围在一对花括号中的零或多个“名/值”对。
  • 若属性名是一个合法的JS标识符且不是保留字,则并不强制要求用引号括住属性名。
    • 引号括住"first-name"是必须的,但first_name则是可选的。

检索

  • []方括号和.点号都能检索对象里属性的值。
  • []方括号内得是字符串表达式或变量,优先考虑.点号表示法。
  • 检索并不存在的成员属性的值,将返回undefined

引用

  • 对象通过引用传递。他们永远不会被复制。
    1
    2
    var a={},b={},c={};   //a、b、c每个都引用不同的空对象。
    a=b=c={}; //a、b、c都引用同一个空对象。

原型

  • 所有通过对象字面量创建的对象都连接到Object.prototype
  • 原型连接在更新(这里更新指更新实例属性,因而没有触及原型对象)时不起作用。
  • 原型关系是动态的。原型对象有改动,则会对所有基于该原型创建的对象可见。

枚举

  • for in中,属性名出现的顺序是不确定的

delete

  • delete运算符不触及原型链中的任何对象,反而可能会让来自原型链中的属性透现出来。

减少全局变量污染

  • 最小化使用全局变量的方法之一:只创建一个唯一的全局变量
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var MYAPP={};

    MYAPP.stooge={
    //代码
    };

    MYAPP.flight={
    //代码
    };
liborn wechat
欢迎您扫一扫上面的微信二维码,订阅我的公众号!