对象Object

对象可以被看做字符串到值的映射,这种数据结构具有多种叫法,如:散列、散列表、字典、关联数组

 

属性特性:

  1. 可写,是否可以设置该属性的值

  2. 可枚举,是否可以通过for/in循环返回该属性

  3. 可配置,是否可以删除或修改该属性 

对象拥有的三个相关的对象特性:

  1. 对象的原型(prototype)指向另外一个对象(a),本对象(a)的属性继承至它的原型对象

  2. 对象的类(class)是一个标识对象类型的字符串(new Array, new Object, new Error, new Date -- new 关键字后跟随的单词是否就是标识对象的类型)

  3. 对象的扩展标记(extensible flag)指明了是否可以向该对象添加新属性。

使用术语区分JS中的三类对象和两类属性:

  1. 内置对象(native Object):是由ECMAScript规范定义的对象、类。例如: 数组、函数、正则表达式、日期。

  2. 宿主对象(host Object):是由Javascript解释器所嵌入的宿主环境所定义的(比如web浏览器)定义的。客户端javascript中表示网页结构的HTMLElement对象均是宿主对象。既然宿主环境定义的方法可以当成普通的Javascript函数对象,那么宿主对象也可当成内置对象。

  3. 自定义对象(user-defined Object):是由运行中的Javascript创建的对象。

  4. 自有属性(own property): 是直接在对象中定义的属性

  5. 继承属性(inherited property):是在对象的原型对象(原型对象是否是构造函数???)中定义的属性

 

对象的创建有三种形式: 对象直接量、关键字new 和 (ECMAScript 5中的)Object.create() 函数来创建对象

  1. 最简单的对象直接量 var a = {};  这句话可被解释为我们直接创建了一个对象 "{}",并将它的引用地址复制给了 a

        2. 关键字 new创建并初始化一个新对象:new 关键字后会跟随一个函数调用 var a = new Array();

      1> 构造函数: new 关键字后跟随的函数,我们称为构造函-)当新创建一个函数时,他只是普通函数,只有该函数被new运算符初始化后,我们才称该函数是构造函数。

           2> Javascript 语言核心中的原始类型都包含内置函数。例如:new Array() / new RegExp() / new Object() / new Date()

     3. Object.create()创建对象(假设为a): 第一个参数代表所创建对象(a)的原型,第二个为可选参数用于对第一个参数(对象)的属性进行描述【配置属性特性,上面有介绍属性特性】 var a = Object.create({ x:1, y:2 }); a继承了属性 x和y

     1> 可以通过将第一个参数传入null创建一个没有原型的对象,但是这种方式创建的对象不会继承任何东西,甚至不包括基础方法,比如: toString(), 它将不能和 “+“ 运算符一起正常工作。

          2> 创建一个普通的空对象 var o3 = Object.create(Object.prototype);

 

  

posted @ 2019-04-01 22:05  大帝SING  阅读(230)  评论(0编辑  收藏  举报