3.1 Object()对象概要
可以将Object()构造函数想成是饼干模具,该饼干模具用来创建没有预定义属性或方法的空对象(当然除了那些继承自原型链的属性或方法。)
3.2 Object()参数
Object()构造函数采用一个可选参数,该参数是要创建的值。如果不提供任何参数,那么将有哟个null或undefined值。
如果将一个null和undefined之外的值传递给Object()构造函数,那么传入的值将被创建为一个对象。所以从理论上说,我们可以使用Object()构造函数来创建其它拥有构造函数的原生对象。
console.log(new Object());
console.log(new Object(null));
console.log(new Object(undefined));
console.log(new Object('liuyang'));
console.log(new Object(function () {}));
3.3 Object()属性和方法
Object()对象具有以下属性(不包含继承的属性和方法)。
属性
prototype原型
3,4 Object()对象实例属性和方法
实例属性
constructor 构造函数
实例方法
hasOwnProperty()
isPrototypeOf()
propertyIsEnumerable()
toLocaleString()
toString()
valueOf()
!!原型链以Object.prototype结尾,因此,Object()的所有属性和方法被所有的JavaScript对象继承。
var liuy = new Object();
liuy.name = 'LiuYang';
liuy.getName = function(){
return this.name;
}
console.log(liuy.getName());
console.log(liuy.prototype);
console.log(liuy.toString());
console.log(liuy.constructor);
3.5 使用对象字面量创建Object()对象
创建“对象字面量”需要使用花括号包含一个或多个属性。
var liuy = {
name: 'LiuYang',
age: 23,
sex: 'male',
'getInfo': function(){return liuy.name+this.age+this.sex;}
};
console.log(liuy);
console.log(liuy.getInfo());
首先,它是一条语句,结尾要加分号;其次,最后一个属性后面没有逗号,最后,每个属性后面跟的是逗号,不是分号(因为不是语句)。
没必要将属性指定为字符串,除非属性名是如下几种情况。
是保留关键字之一。(在编辑器中会变色的标识符(属性))
包含空格或特殊字符(不在标识符规定内的字符)
以数字开始。
嗯,,就是不符合标识符命名规范的.
重要的事情再说一遍:对象的最后一个属性后面不该跟逗号。
3.6 所有你对象都继承自Object.prototype
Object()构造函数在JavaScript中是特殊的,因为它的prototype属性在原型链中是最后一个。
所以所有的对象都会继承Object.prototype的属性。
Object.prototype.foo = 'foo';
var myString = 'bar';
console.log(myString.foo);
!!!添加至Object.prototype的任何内容都将出现在for in循环和原型链中。