先来发这张著名的图:
原型链原理
- Object.prototype是最原始的属性,是其他对象的根原型。Object.proto==null
- 五个基本类型的__proto__指向Object.prototype;
- Array.prototype
- Number.prototype
- String.prototype
- Boolean.prototype
- Function.prototype
- function Function()的__proto__和prototype指向Function.prototype
继续实现
原型链方式
function A(){
this.say=function(name){
console.log('hello ' + name);
}
}
function B(){
this.mute=function(){
console.log('I am mute.');
}
}
B.prototype=new A();
var b=new B();
b.say('migao');
b.mute();
复制代码
输出:
hello migao
Now I am mute.
复制代码
查看原型链
b.__proto__ //A
b instanceof B //true
b instanceof A //true
A.__proto__ //ƒ () { [native code] }
复制代码