[英]Javascript prototype organisation
通過該組織,是否可以引用“ 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()
在Javascript中使用這樣的結構真的不是很容易:
house.prototype.buy.makeOffer=function(){
//how can id be printed?
console.log( 'id = ' + this.???? )
}
問題是,當您像這樣在house實例上調用該方法時:
var h = new house(1);
h.buy.makeOffer();
makeOffer()
方法中的this
值將指向原型中的buy
對象(這是您的buy
方法),而不會指向您的house
對象。 這就是方法調用在Javascript中的工作方式( this
指向具有該方法的對象),當您希望通過this
非常不實際的方式引用實際的實例數據時,該方法將呈現這些嵌套的方法。
通常的解決方案是不實現嵌套。 只需集成名稱,無需像這樣添加額外的對象層:
house.prototype.buyMakeOffer=function(){
//how can id be printed?
console.log( 'id = ' + this.???? )
}
var h = new house(1);
h.buyMakeOffer();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.