美文网首页
JavaScript 对象

JavaScript 对象

作者: 欢欣的膜笛 | 来源:发表于2019-11-08 11:07 被阅读0次

什么是面向对象?

  • 在《面向对象分析与设计》这本书中,Grady Booch替我们做了总结,他认为,从人类的认知角度来说,对象应该是下列事物之一:

    1.  一个可以触摸或者可以看见的东西;
    2. 人的智力可以理解的东西;
    3. 可以指导思考或行动(进行想象或施加动作)的东西。
    

JavaScript 对象的特征

  • 唯一标识性:内存地址
  • 状态:对象具有状态,同一对象可能处于不同状态之下
  • 行为:即对象的状态,可能因为它的行为产生变迁
  • 动态性:JavaScript 赋予了使用者在运行时为对象添改状态和行为的能力。
  • 在 JavaScript 中,将状态和行为统一抽象为“属性”

JavaScript 对象的两类属性

  • JavaScript 用一组特征(attribute)来描述属性(property)

  • 数据属性(可以使用内置函数 Object.getOwnPropertyDescripter 来查看):

    1. value: 就是属性的值。 
    2. writable: 决定属性能否被赋值。
    3. enumerable: 决定 for in 能否枚举该属性。 
    4. configurable: 决定该属性能否被删除或者改变特征值。
    
  • 访问器(getter / setter)属性:

    1. getter: 函数或 undefined,在取属性值时被调用。 
    2. setter: 函数或 undefined,在设置属性值时被调用。 
    3. enumerable: 决定 for in 能否枚举该属性。 
    4. configurable: 决定该属性能否被删除或者改变特征值。
    
  • 改变属性的特征,或者定义访问器属性,可以使用 Object.defineProperty

  • JavaScript 对象的运行时是一个“属性的集合”,属性以字符串或者 Symbol 为 key ,以数据属性特征值或者访问器属性特征值为 value。

JavaScript 的原型

  • 如果所有对象都有私有字段[[prototype]],就是对象的原型。

  • 读一个属性,如果对象本身没有,则会继续访问对象的原型,直到原型为空或者找到为止。

  • 从 ES6 以来,JavaScript 提供了一系列内置函数,以便更为直接地访问操纵原型。三个方法分别为:

    1. Object.create 根据指定的原型创建新对象,原型可以是 null; 
    2. Object.getPrototypeOf 获得一个对象的原型; 
    3. Object.setPrototypeOf 设置一个对象的原型。
    

JavaScript 中的对象分类

  • 宿主对象(host Objects): 由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定。

  • 内置对象(Built-in Objects): 由JavaScript语言提供的对象。

    1. 固有对象(Intrinsic Objects ): 由标准规定,随着 JavaScript 运行时创建而自动创建的对象实例。 
    2. 原生对象(Native Objects): 可以由用户通过 Array、RegExp 等内置构造器或者特殊语法创建的对象。 
    3. 普通对象(Ordinary Objects): 由{ }语法、Object 构造器或者 class 关键字定义类创建的对象,它能够被原型继承。

相关文章

网友评论

      本文标题:JavaScript 对象

      本文链接:https://www.haomeiwen.com/subject/yaclbctx.html