20.重置一个已继承的constructor属性

说明

当一个对象从另一个对象继承其prototype时,它也继承了supertypeconstructor属性。

以下是一个例子:

function Bird() { }
Bird.prototype = Object.create(Animal.prototype);
var duck = new Bird();
duck.constructor // function Animal(){...}

但是duckBird的所有实例都应该表明它们是由Bird而不是Animal构建的。因此,你可以手动将Birdconstructor属性设置为Bird对象:

Bird.prototype.constructor = Bird;
duck.constructor // function Bird(){...}


练习

修复代码,使duck.constructorbeagle.constructor返回各自的构造函数。使用console.log 打印出 duck

  • Bird.prototype应该是Animal的一个实例。
  • duck.constructor应该返回Bird
  • Dog.prototype应该是Animal的一个实例。
  • beagle.constructor 应该返回Dog.
function Animal() { }
function Bird() { }
function Dog() { }

Bird.prototype = Object.create(Animal.prototype);
Dog.prototype = Object.create(Animal.prototype);

// Add your code below this line



var duck = new Bird();
var beagle = new Dog();

答案

方法描述
function()是一个可以被其他代码或其自身调用的代码片段,或者是一个指向该函数的变量 。
prototype给对象添加属性和方法。
Object构造函数创建一个对象包装器。
Object.create()创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。 
constructor 返回对创建此对象的数组函数的引用。
var声明一个变量,并可选地将其初始化为一个值。
new创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。
console.log()用于在控制台输出信息(浏览器按下 F12 打开控制台)。

 

function Animal() { }
function Bird() { }
function Dog() { }

Bird.prototype = Object.create(Animal.prototype);
Dog.prototype = Object.create(Animal.prototype);

// Add your code below this line
Bird.prototype.constructor = Bird;
Dog.prototype.constructor = Dog;


var duck = new Bird();
var beagle = new Dog();

console.log(duck.constructor);
console.log(beagle.constructor);

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值