call()不适用于通过函数构造函数创建的对象

问题描述 投票:1回答:1

我在JS中创建了一个名为HOUSE的构造函数。

function House(color, floor, location){
    this.color = color;
    this.floor = floor;
    this.location = location;    
}

使用该原型,我还创建了两个名为myHouse和myOldHouse的对象。

var myHouse = new House('brick red', '1st floor', 'saltlake');
var myOldHouse = new House('Yellow', '2st floor', 'Koikhali');

然后,我向myHouse对象添加了一个名为address的新方法。

myHouse.address = function(address){
   this.address = address;
   console.log('My address is '+this.address); 
}

现在我也想使用调用函数将此方法添加到myOldHouse对象。

myHouse.address.call(myOldHouse, '2G');

但是当我调用myOldHouse.address()时,它显示错误。

javascript object constructor prototype call
1个回答
0
投票

我喜欢你的方式,这是传统方法。请使用setAddress之类的。试试这个:

myHouse.prototype.setAddress = function(address){
   this.address = address;
   console.log('My address is '+this.address); 
}

这种类定义方式并不奇怪也不愚蠢。您总是可以将您的课程放在一个文件中,以确保所有内容都清楚。

© www.soinside.com 2019 - 2024. All rights reserved.