本人新手, 学习javascript定时器的时候遇到了一点疑惑, 可能是个老生常谈的问题了, 但是还是想请教一下各位前辈, 问题与代码如下:
var Cat = function() {
var o = {
say: function() {
console.log('say something');
}
}
setInterval(function(){
o.say()
}, 1000)
return o
}
var cat = Cat()
cat.say = function() {
console.log('Hello');
}
问题描述:
我定义了一个Cat类(用的工厂模式), 然后这个类里面有一个方法say(), 同时还有一个setInterval执行这个'方法', 然后实例化这个类, 重新声明一次say()这个方法.
我的困惑:
在于, 输出是'Hello', 而不是我一开始定义的那个类里面的那个方法, 这个地方不是特别理解
个人理解:
由于setInterval传进来的回到函数是一个方法, 实际上那个 o 指代的是实例化以后的那个实例对象, 而不是一开始的那个类?
但是感觉好像有点懂了, 但是又有点不懂, 或者其实根本不懂, 到底该如何正确清晰理解这段代码的运行过程, 希望各位前辈能有一个详细的解答, 多谢.
明月笑刀无情
呼啦一阵风
翻阅古今
FFIVE
相关分类