簡體   English   中英

JavaScript原型組織

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM