原型问题1—原型对象的替换
Posted jokes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型问题1—原型对象的替换相关的知识,希望对你有一定的参考价值。
function Animal(){ this.type = "Animal"; } Animal.prototype.say = function(){ console.log(this.type); } function Cat(){ this.vioce = "喵喵喵"; } Cat.prototype.shout = function(){ console.log(this.vioce); } Cat.prototype = new Animal(); let cat1 = new Cat(); cat1.say(); //"Animal" cat1.shuot(); //err,报错无此函数
为什么cat1会找不到因为:
Cat.prototype.shout = function(){ console.log(this.vioce); }
已经为Cat.prototype 指向了一个对象{ shout = function(){ console.log(this.vioce); } }
所以Cat.prototype = new Animal()
会重新把Cat.prototype的指向更改为{ new Cat() }对象;
所以会找不到:
解决办法:
先 Cat.prototype = new Animal() 创建一个指向,
然后:Cat.prototype.shout = function(){ console.log(this.vioce); } 这一步是给对象{ new Animal() } 添加了一个属性
以上是关于原型问题1—原型对象的替换的主要内容,如果未能解决你的问题,请参考以下文章