【发布时间】:2016-10-14 10:36:25
【问题描述】:
Counter = function ()
{
var _count;
_count = 0;
this.AddCounter = function()
{
_count++;
};
this.Reset = function ()
{
_count = 10;
};
Object.defineProperty( Counter, 'Value', {
get : function(){ return _count; },
set : function(){ _count = Value; },
configurable: true } );
}
Clock = function ()
{
var second = new Counter();
var minute = new Counter ();
var hour = new Counter();
this.Reset = function()
{
second.Reset();
minute.Reset();
hour.Reset();
};
this.Tick = function()
{
second.AddCounter();
if (second.Value == 60)
{
second.Reset();
minute.AddCounter();
if (minute.Value == 60)
{
minute.Reset();
hour.AddCounter();
}
}
};
this.ReadClock = function()
{
var sz = 0;
var mz = 0;
var hz = 0;
if (second.Value == 9)
{sz = null;}
if (minute.Value == 9)
{mz = null;}
if (hour.Value == 9)
{hz = null;}
document.getElementById("clock").innerHTML = ("" + hz + hour.Value + ":" + mz + minute.Value + ":" + sz +second.Value);
};
}
function Init()
{
var myClock = new Clock();
myClock.Tick();
myClock.ReadClock();
}
window.onload = Init;
我得到的结果是:
0undefined:0undefined:0undefined
我认为问题与我的 Get/Set 属性有关。
也很难让时钟滴答作响,但是一旦我将 Tick() 函数放入 for 循环中,这可能是可以解决的。
【问题讨论】:
-
Value是Counter对象的属性,而不是其实例的属性。要使Value成为实例的属性,您需要在Counter.prototype中添加相同的属性 -
set : function(Value){ _count = Value; },喜欢吗?编辑:有人删除了他们的评论,这就是他们的答案
标签: javascript object get set