原型链

一、创建对象的几种方式:
1、创建单个对象(Object 构造函数或对象字面量),缺点:创建很多对象,会产生大量的重复代码

1
2
3
4
5
6
7
8
9
10
//Object 构造函数
var person = new Object();
person.name = "Nicholas";
person.age = 29;

//对象字面量
var person = {
name: "Nicholas",
age: 29
};

2、工厂模式(解决创建很多对象,会产生大量的重复代码的问题)

1
2
3
4
5
6
7
8
function createPerson(name, age){
var o = new Object();
o.name = name;
o.age = age;
return o;
}
var person1 = createPerson("Nicholas", 29);
var person2 = createPerson("Nicholas", 29);

3、构造函数模式

1
2
3
4
5
6
function Person(name, age){
this.name = name;
this.age = age;
}
var person1 = new Person("Nicholas", 29);
var person2 = new Person("Nicholas", 29);

4、Object.create({name:’p’}),创建了一个空对象,新对象的proto指向{name:’p’}
二、原型、构造函数、实例、原型链
image
三、instanceof的原理
image
四、new的时候都做了什么?
创建对象-改变this指向-执行构造函数中的代码-返回新对象