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();
有了这个组织,是否可以参考 "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();