原型对象
构造函数的原型对象,该对象在构造函数创建时自动存在。该对象的属性和函数是构造函数的默认属性和方法。构造函数中的属性是私有的,但是原型对象中的是共有的。原型对象内有一个默认的 constructor 属性,指向构造函数。
实例化对象中默认存在一个__proto__属性,该属性指向构造函数的原型对象。
对象属性的特征
configurable:false,能否使用 delete、能否需改属性特性、或能否修改访问器属性、,false 为不可重新定义,默认值为 true
enumerable:false,对象属性是否可通过 for-in 循环,flase 为不可循环,默认值为 true
writable:false,对象属性是否可修改,flase 为不可修改,默认值为 true
value:‘xiaoming’ 对象属性的默认值,默认值为 undefined
Object.defineProperty 可以使用该方法给对象添加属性或者对已有的属性进行修改,并可以修改对象属性特征。
例:
Object.defineProperty(Person,"name",{ value:"小明", configurable:false, writable:false, enumerable:false })
function SystemUser(name,age) { Person.call(this,name,age) } SystemUser.prototype=Person.prototype; SystemUser.prototype.constructor=SystemUser;
var obj={…obj1,…obj2},将两个对象合并到一起。
例: function Animal(type) { this.type = type; } Animal.prototype.say = function () { console.log("我是" + this.type + "动物"); }; var CatAnimal = new Animal("猫科类"); function Cat(name, age) { this.name = name; this.age = age; } Cat.prototype = CatAnimal; Cat.prototype.getName = function () { console.log("我的名字是" + this.name); };