1、利用构造函数创建对象
function Person(){}
var person1 = new Person();
// 当不需要传参给构造函数时,可以省略括号
var person1 = new Person;
// person1是Person的实例
console.log(person1 instanceof Person); // true
注:当构造函数内部返回对象时,通过new操作符创建对象,返回的实例会被构造函数内部return的对象所替换;如果返回的是一个原始类型,它会被忽略,将会返回实例。
2、确保使用new调用构造函数,否则,就是在冒险改变全局对象的风险,而不是创建新对象。
function Person(name){
this.name =name;
}
var person1 = Person('张三');
console.log(person1); // undefined
console.log(window.name); // 张三
3、原型对象添加属性
function Person(name){
this.name =name
}
Person.prototype.sayName = function(){
console.log(this.name);
}
var person1 = new Person('张三');
person1.sayName(); // 张三
当需要添加多个属性时候,可以使用便捷方法
function Person(name){
this.name =name
}
Person.prototype = {
constructor: Person, // 必须设置constructor属性
sayName: function(){
console.log(this.name);
}
}
var person1 = new Person('张三');
person1.sayName(); // 张三
4、所有对象都自动继承Object。
5、对象继承
对象字面形式会隐式制定Object.prototype为其[[Prototype]]
,也可以使用Object.create()方法显示指定。Object.create()方法接受2个参数。第一个参数是需要设置为新对象的[[Prototype]]
的对象。第二个可选参数是一个属性描述对象。
var book = {
title: '悟空传'
};
// 使用Object.create()方法
var book = Object.create(Object.prototype, {
title: {
configurable: true,
enumerable: true,
value: '悟空传',
writable: true
}
})