gpt4 book ai didi

Javascript原型(prototype)组织

转载 作者:行者123 更新时间:2023-12-03 10:29:43 29 4
gpt4 key购买 nike

通过这个组织,是否可以引用“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();

我正在尝试找出组织一个对象的大量原型(prototype)的最佳方法。由于 .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();

this makeOffer() 中的值方法将指向buy原型(prototype)中的对象(这是你的 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();

关于Javascript原型(prototype)组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29269039/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com