有了这个组织,是否可以引用“id”属性?
function house(id) { this.id = id }
house.prototype.buy = function() { }
house.prototype.sell = function() { }
house.prototype.buy.makeOffer=function(){
//how can id be printed?
console.log( 'id = ' + this.???? )
}
var h = new house(1)
h.buy.makeOffer();
我试图找出为对象组织大量原型的最佳方法。因为.buy会有很多子功能,所以.sell()即:
h.buy.makeOffer();
h.buy.inspect();
h.buy.counterOffer();
h.buy.signContact();
h.sell.prepare()
h.sell.advertise()
h.sell.reviewOffer()
答案 0 :(得分:1)
在Javascript中使用这样的结构真的不是很容易:
house.prototype.buy.makeOffer=function(){
//how can id be printed?
console.log( 'id = ' + this.???? )
}
问题是,当你在这样的房子实例上调用该方法时:
var h = new house(1);
h.buy.makeOffer();
this
方法中的makeOffer()
值将指向原型中的buy
对象(这是您的buy
方法)并且它不会指向您的{ {1}}对象。这就是方法调用如何在Javascript中工作(house
指向具有该方法的对象),当您希望通过this
引用的实际实例数据非常不切实际时,这些方法会呈现这些嵌套方法。
通常的解决方案是不实现嵌套。只需整合名称,不需要额外的对象层,如下所示:
this