美文网首页
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