一 建立对象:javascript
对象直接量:由若干名/值对组成的映射表,名/值对中间使用冒号分离,明/值对之间用逗号分离,整个映射变使用花括号括起来。举例以下:java
var book = { "main title": "javascript", // 属性名字里有空格,必须用字符串表示 "sub-title": "The Definitive Guide", // 属性名字里连字符,必须使用字符串即是 "for": "all audiences", // "for"是保留字,所以必须用引号 author: { // 这里的属性值是一个对象 firstName: "David", // 注意,这里的属性名都没有引号 surname: "Flanagan" } };
经过new建立对象:new运算符建立并初始化一个对象。关键字new后跟随一个函数调用。这里的函数称做构造函数,构造函数用以初始化一个新建立的对象。例如:数组
var o = new Object(); // 建立一个空对象,和{}同样 var a = new Array(); // 建立一个空数组,和[]同样
原型:每个javascript对象都和另外一个对象关联。
没有原型的对象为数很少,Object.prototype就是其中之一。ide
Object.create():它建立一个新对象,其中第一个参数是这个对象的原型,第二个可选参数,用以对对象的属性进行进一步描述。例如:函数
var o1 = Object.create({x:1, y:2}); // o1继承了属性x和y var o2 = Object.create(null); // o2不继承任何属性和方法
二 属性的查询和设置ui
能够经过点(.)或方括号([])运算符来获取属性的值。运算符左侧应当是一个表达式,它返回一个对象。对于点来讲,右侧必须是一个以属性名称命名的简单标识符。对于
方括号来讲,方括号内必须是一个计算结果为字符串的表达式,这个字符串就是属性的名字:prototype
var author = book.author; // 获得book的"author"属性 var name = author.surname; // 获得auhor的"surname"属性
和查询属性的写法同样,经过点和方括号也能够建立属性或给属性赋值,但须要将它放在表达式的左侧:
book.edition = 6; // 给book建立一个名为"edition"的属性 book["main title"] = "ECMAScript"; // 给"main title"属性赋值
三 删除属性code
delete运算符能够删除对象的属性。它的操做数应当是一个属性访问表达式。delete只是断开属性和宿主对象的联系,而不会去操做属性中的属性。例如:
delete book.author; // book再也不有属性author
delete运算符只能删除自有属性,不能删除继承属性。
四 检测属性对象
javascript对象能够看作属性的集合。须要检测集合中成员的所属关系--判断某个属性是否存在于某个软件中。可使用in运算符,hasOwnProperty()和propertyIsEnumerable()方法来完成。
五 枚举属性继承
遍历对象属性三种方法: * 一般使用for/in循环. * Object.keys(). * Object.getOwnPropertyNames().
六 属性getter和setter
对象由名字、值和一组特性构成的。属性值能够用一两个方法替代,这两个方法就是getter和setter。由getter和setter定义的属性称做“存储器属性”, 不一样于“数据属性”,数据属性只有一个简单的值。
七 对象的三个属性
* 原型属性: 要想检测一个对象是不是另外一个对象的原型,请使用isPrototypeof()方法。 * 类属性: 使用classof()函数能够返回传递给它的任意对象的类。
function classof(o) { if (o === null ) return "Null"; if (o === undefined) return "Undefined"; return Object.prototype.toString().call(o).slice(8, -1); }
八 序列化对象
对象序列化是指将对象转换为字符串,也能够将字符串还原为对象。 * JSON.Stringify() 序列化对象 * JSON.parse() 还原js对象