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循环和原型链中。