JS 对象

javascript 的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”貌似对象,因为他们拥有放飞,但他们是不可变的。javascript中的对象是可变的键控集合,并且对象是无类型的。
javascript 包含一种原型链的特性,允许对象继承另一个对象的特性。正确地使用它能减少对象初始化时消耗的时间和内存。

对象字面量

对象字面量提供一种非常方便创建新对象值的表示法。
在对象字面量中,如果属性名是一个合法的 javascript 标识符且不是保留字,则并不强制要求用引号括住属性名

检索

1、 []中括住一个字符串表达式
2、 . 表示法

更新

对象里的值通过赋值语句来更新

引用

对象通过引用来传递,但他们永远不会被复制

原型

字面量创建对象的原型

每个对象都连接到一个原型对象,并且它可以从中继承属性。所有通过对象字面量创建的对象都连接到 Object.prototype,它是javascript 中的标配对象。

为创建的新对象指定它的原型

创建一个新对象时,我们可以给对象指定它的原型

if(typeof Object.create !== 'function') {
      Object.create = function(o) {
          var F = function(){};
           F.prototype = 0;
            return new F();
      };
}

原型连接

  • 原型连接在更新时是不起作用的。当我们队某个对象做出改变是,不会触及该对象的原型
  • 原型连接只有在检索值的时候才被用到(如果我们尝试去获取对象的某个属性值,但该对象没有此属性名,那么javascript会试着从原型对象中获取属性值。如果原型对象也没有改属性,那么再从它的原型中寻找,以此类推,直到过程最后达到终点Object.prototype。如果想要的属性完全不存在与原型链中,那么结果就是undefined值。这个过程称为委托
  • 原型关系是一种动态关系。如果我们添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见

反射

当你想让对象在运行时动态获取自身信息时,我们关注的更多的是数据,而对象的一些更多的值为函数,有两种方式帮我们处理:

  • 让程序做检查并丢弃值为函数的属性(typeof 值为 function)
  • 使用hasOwnProperty 方法,如果对象拥有独有的属性,它将返回true。hasOwnProperty 方法不会检查原型链

枚举

for in 语句可用来边里一个对象中的所有属性名。该枚举过程将会列出所有的属性,包括函数和你可能不关心的原型中的属性,并且属性的顺序是不确定的,所以有必要过滤掉那些你不想要的值。

  • hasOwnProperty 和 typeof 来排除函数
  • for 循环,自定义自己想要的属性和顺序,然后通过for循环,不用担心发掘原型链中的属性,并且我们按照正确的顺序取得了他们的值

减少全局变量污染

javascript 可以很随意地定义全局变量来容纳你的应用的所有资源,但全局变量削弱了程序的灵活性,应该避免使用
减少全局变量污染的方法

  • 为你的应用只创建一个唯一的全局变量(与其他的应用程序、组件或类库之间发生冲突的可能性就会显著降低)
  • 使用闭包

你可能感兴趣的:(JS 对象)