为什么要使用prototype?
new关键字的作用?
//构造函数
var Pet = function(word){
this.word = word;
this.type = 'animal';
}
//用new关键字继承pet
var dog = new Pet('wang wang~');
dog.word;//wang wang~
var cat = new Pet('miao miao~');
cat.word;//miao miao~
dog.type = 'person';
dog.type;//person
cat.type;//animal
通过继承得到的属性并没有共享,这样就造成资源上的极大浪费。于是引入了prototype原型继承
//构造函数
var Pet = function(word){
this.word = word;
this.type = 'animal';
}
Pet.prototype.type = 'person';
//用new关键字继承pet
var dog = new Pet('wang wang~');
dog.word;//wang wang~
var cat = new Pet('miao miao~');
cat.word;//miao miao~
dog.prototype.type = 'person';
dog.type;//person
cat.type;//person
new关键字到底做了什么?
1.创建类的实例。这步是把一个空的对象的 __proto__ 属性设置为 F.prototype 。
2.初始化实例。函数 F 被传入参数并调用,关键字 this 被设定为该实例。
3.返回实例。
function New (f) {
var n = { '__proto__': f.prototype }; /*第一步*/
f.apply(n, arguments); /*第二步*/
return n; /*第三步*/
}