1、什么是原型链机制 javascript
首先来看一段代码:java
1 var person = {name : "Peter"}; 2 3 //Peter 4 console.log(person.name); 5 6 //undefined 7 console.log(person.age); 8 9 Object.prototype.age = 100; 10 11 //100 12 console.log(person.age);
为何person.age 能够访问 Object.prototype.age 呢?chrome
这里就要引出原型链了:网络
当须要获取一个对象的某个属性或方法时,首先在对象自身查找该属性,找不到的话,会沿着原型链向上查找,直到在某个原型中找到该属性,若是到达原型链顶端依然找不到,则返回undefined.函数
2、原型链的做用学习
继承实例:this
1 function Father(){ ...} 2 3 function Son(){...} 4 5 var father = new Father(); 6 7 //实现继承,全部的son继承自father对象 8 Son.prototype = father; 9 10 var son = new Son(); 11 12 //true 13 son instanceof Father;
使用原型来防止方法重复定义:spa
1 //使用这种方法来定义构造函数时,每次new Cat都从新建立了一个bite方法 2 function Cat(){ 3 this.name = "咪咪"; 4 function bite(){...} 5 } 6 7 //这种方式,在new Dog时,全部实例都用的同一个bite方法 8 function Dog(){ 9 this.name = "旺财"; 10 } 11 12 Dog.prototype.bite = function(){...}
3、理解原型链原理prototype
想要理解javascript的原型链机制,首先要有这些概念:code
ps:基本数据类型在执行方法时会被转换为对应的包装对象(Number, String, Boolean)
接下来,就是原型链的核心了,请注意,核心是[[proto]]:
你们结合文字再看网络上流传的图,进一步的理解原型链.