gpt4 book ai didi

javascript - JavaScript 中的对象变量

转载 作者:行者123 更新时间:2023-11-30 07:10:33 24 4
gpt4 key购买 nike

我有以下代码:

WaitModel = ->
timesDelayed = 0
maxDelay = 10

return this

WaitModel.prototype =
wait: ->
console.log 'waiting'

console.log this.timesDelayed, this.maxDelay

if this.timesDelayed >= this.maxDelay
console.log 'running'
this.timesDelayed = 0

else
this.timesDelayed++
setTimeout this.wait, 1000

return

new WaitModel().wait()

我认为这应该产生如下输出:

waiting
0 10
waiting
1 10
...

但它会产生如下输出:

waiting
0 10
waiting
undefined undefined

我在哪里取消设置 this.timesDelayedthis.maxDelay?我误解了这里制作对象的方式吗?

最佳答案

jfriend00 已经告诉你你做错了什么。在 CoffeeScript 中解决这个问题的惯用方法是使用 => (fat arrow)定义您的 wait 方法。我还取消了您的 CoffeeScript 的 JavaScript 以使其更加地道:

class WaitModel
constructor: (@timesDelayed = 0, @maxDelay = 10) ->
wait: =>
console.log 'waiting'
console.log @timesDelayed, @maxDelay
if @timesDelayed >= @maxDelay
console.log 'running'
@timesDelayed = 0
else
@timesDelayed++
setTimeout @wait, 1000

new WaitModel().wait()

演示:http://jsfiddle.net/ambiguous/aYFmL/1/

关于javascript - JavaScript 中的对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9134049/

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