JS原型,原型链

实例的构造函数属性指向构造函数

1
2
3
4
5
6
7
8
function Person(name,age){
this.name = name;
this.age = age;
}

var person = new Person()

person.constructor == Person//true

JavaScript中每个函数对象都有一个prototype属性,指向函数的原型对象

1
Person.prototype.construtor == Person

JavaScript创建对象时内置属性 proto,指向创建它的构造函数的原型对象

1
person.__proto__ == Person.prototype

原型对象也是对象,它也有 proto 属性

1
2
Person.prototype.__proto__ == Object.prototype
Object.prototype.__proto__ == null

依靠proto属性构造原型链;依靠原型和原型链实现JavaScript继承特性

1
2
3
4
5
6
7
var animal = function(){};
var dog = function(){};
animal.price = 2000;
dog.prototype = animal;
var tidy = new dog();
console.log(dog.price) //undefined
console.log(tidy.price) // 2000