JavaScript模式(第三章)

字面量和构造函数

对象字面量

  • 对象的键的值是原始类型或对象时,则称为属性;如果是函数,则称为方法。
  • js中没有类,但是其构造函数的语法与基于类的语言中创建对象的语法相似。
  • 对象字面量创建对象的好处:
    • 代码更少
    • 没有作用域解析
    • 对象字面量强调的是哈希隐射,而不是从对象中提取属性和方法
  • 通过new Object()创建对象,会根据传入的参数来委派其他的内置构造函数来创建对象。如果传入的值是动态的,并且直到运行时才能确定其类型,这种行为会导致意想不到的结果。
    var o = new Object(1); console.log(o.constructor === 'Number'); //true
  • 当以new操作符调用构造函数时,函数内部发生的情况如下:
    1. 创键一个空对象并且this值引用了该对象,同时继承该函数的原型
    2. 属性和方法加入到该对象中
    3. 隐式的放回this的值(即这个对象)
  • 在构造函数中,如果显示的返回(通过return)其他对象,则该构造函数将返回这个其他对象。但是如果显示返回的是一个非对象的值,则会忽略该值,返回this的值。

数组字面量

  • 因为数组构造函数的特殊性,即当传入一个数字时,他会创建一个长度等于该数字的数组,而且传入一个浮点数时,会报错。因此尽量使用数组字面量来创建数组。

JSON

  • 在JSON字符串中,不能使用函数和正则表达式。

正则表达式

  • 调用RegExp()不使用new行为与使用new行为的结果是一样的。

基本值类型包装器

  • 通常使用包装对象的原因之一是您有扩充值以及持久保存状态的需要。因为基本值类型不是对象,他们不可能扩充属性。
posted @ 2017-03-06 17:11  oN_Name  阅读(190)  评论(0)    收藏  举报