JS对象

除了 字符串,数字,布尔值(true / false),null 和 undefined 以外,JS中的值都是对象。

对象是属性的无序集合,每个属性都是一个 名/值对。属性名都是字符串,因此可以把对象看作是字符串到值的映射。在其他语言中,也叫 散列(hash),散列表(hashTable),字典(Dictionary),"关联数组"(associative array)。

属性包括名字和值,属性名可以是包含空字符串在内的任意字符串,但对象中不能存在两个同名的属性。

属性值可以是任意Javascript值。

 

PS:

集合的有序、无序是指插入元素时,保持插入的顺序性,也就是先插入的元素优先放入集合的前面部分。
而排序是指插入元素后,集合中的元素是否自动排序。(例如升序排序)

Java的HashMap、 HashSet、 HashTable 等 基于哈希存储方式的集合是无序的。其它的集合都是有序的。而TreeMap TreeSet 等集合是排序的。

创建对象的方式:

(1)对象直接量:是由若干 名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用大括号括起来。

eg: var book = { "main title" : "JavaScript",

          author : { firstname : "David",

             subname: "test"

                                    }

                          };

    属性名都是字符串,包括空字符串,一般不用引号括起来,但是如果属性名包含一些特殊字符或者是保留字,则必须用引号括起来。

(2)通过 new 创建对象

    new 运算符创建并初始化一个新的对象。 关键字 new后面紧跟一个函数调用。这里的函数称为 构造函数(Constructor)

   var o = new Object();

(3) 原型 Prototype

  每一个Javascript对象(null除外)都和另一个对象相关联。另一个对象就是原型每一个对象都从原型继承属性

 所有通过对象直接量建立的对象都具有同一个原型对象,通过代码 Object.prototype获得对原型对象的引用。

  通过new关键字和构造函数调用  创建的对象的原型 是 构造函数的prototype属性的值。即 new Object()创建的对象的原型是 Object.prototype属性对应的值。new Array()创建的对象的原型是 Array.prototype属性对应的值。

prototype是一个对象的属性,比如 Object.prototype是对象Object的属性,Array.prototype是对象Array的属性。

(4)Object.create()

Object.create()是一个静态函数,该函数第一个参数是新创建的对象的原型,第二个参数是可以的,用于进一步描述对象的属性。

eg:

1       var o1 = Object.create({x:1, y:2});  // 对象 o1 继承了原型对象{x:1, y:2}的属性x,y。
2 
3       var o2 = Object.create(null); //o2是一个没有原型的新对象,不继承任何属性和方法
4 
5       var o3 = Object.create(Object.prototype); //o3是一个空对象,原型是 Object.prototype.

 

posted @ 2018-04-11 10:16  C+++++++wyl  阅读(232)  评论(0编辑  收藏  举报