您现在的位置:首页 >> 前端 >> 内容

前端中的原型、原型链代码实例讲解

时间:2018/4/3 11:37:28 点击:

  核心提示:代码:var animal = function(){};var dog = function(){};animal.price = 2000;//dog.prototype = animal;var...

代码:

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

因为原型链是依赖于__proto__,而不是prototype。

dog是函数对象,本身没有price属性,此时dog的__proto__属性指向的是其构造函数的原型。

dog的构造函数就是Function,因为var dog = function(){};语句实际上是var dog = new Function();,所以,dog.__proto__ === Function.prototype;而Function.prototype并没有price属性,如果加一句:Function.prototype.price = 123;那么第一个打印就是123;

如此依赖,tidy是一个普通对象,由dog函数构造而来,因此tidy__proto__ == dog.prototype == animal;所以当tidy上找不到price属性时,会从proto寻找原型上的方法,找到animal对象,animal对象有price属性,则返回。

作者:网络 来源:雪梅零落