JavaScript - 属性 生命周期和构造方法触发
JavaScript - Property Lifetime and Constructor Method Triggering
我真的想让 Date.now() 作为 属性 可用,而不是函数调用或方法。换句话说,我想要 clock.now.go 到 return 一个 unix 时间戳。我无法让它工作。 returned 时间戳与原始调用停滞不前。下面是显示控制台结果的代码。是否可以通过调用 属性 来触发新的时间戳,或者是否需要函数调用,即“()”?
//Revealing Module Pattern (Public & Private)
var clock = (function() {
// object to expose as public via return
var pub = {};
//constructor function
function Now() {
this.getNow = function() {
return ( Date.now() );
};
this.go = this.getNow();
}
//private
var now = new Now();
//public
pub.test1 = now;
pub.test1.go; //clock.test1.go returns 1461888755076
pub.test1.getNow(); //clock.test1.getNow() returns 1461888767477 (GOOD)
pub.test2 = now.getNow(); //clock.test2 returns 1461888755076 (STALE)
pub.test3 = now.go; //clock.test3 returns 1461888755076 (STALE)
//Return just the public parts
return pub;
}());
如果您希望它显示为 属性,但实际上是一个实时函数调用,那么您可以使用 Javacript getter.
//Revealing Module Pattern (Public & Private)
var clock = (function() {
// object to expose as public via return
var pub = {};
Object.defineProperty(pub, "now", {
get: function () {
return Date.now();
}
});
return pub;
}());
console.log(clock.now); // returns live time
或者,可以浓缩为:
//Revealing Module Pattern (Public & Private)
var clock = (function() {
// object to expose as public via return
var pub = {
get now() {
return Date.now();
}
};
return pub;
}());
console.log(clock.now); // returns live time
或者,即使只是这样(没有封闭模块模式):
var clock = {
get now() {
return Date.now();
}
};
console.log(clock.now); // returns live time
你可以用这样的 getter
var obj = {
_time : "",
get time () {
this._time = new Date();
return this._time;
},
set time(val) {
this._time = val;
}
};
document.write("<pre>" + obj.time + "</pre>");
我真的想让 Date.now() 作为 属性 可用,而不是函数调用或方法。换句话说,我想要 clock.now.go 到 return 一个 unix 时间戳。我无法让它工作。 returned 时间戳与原始调用停滞不前。下面是显示控制台结果的代码。是否可以通过调用 属性 来触发新的时间戳,或者是否需要函数调用,即“()”?
//Revealing Module Pattern (Public & Private)
var clock = (function() {
// object to expose as public via return
var pub = {};
//constructor function
function Now() {
this.getNow = function() {
return ( Date.now() );
};
this.go = this.getNow();
}
//private
var now = new Now();
//public
pub.test1 = now;
pub.test1.go; //clock.test1.go returns 1461888755076
pub.test1.getNow(); //clock.test1.getNow() returns 1461888767477 (GOOD)
pub.test2 = now.getNow(); //clock.test2 returns 1461888755076 (STALE)
pub.test3 = now.go; //clock.test3 returns 1461888755076 (STALE)
//Return just the public parts
return pub;
}());
如果您希望它显示为 属性,但实际上是一个实时函数调用,那么您可以使用 Javacript getter.
//Revealing Module Pattern (Public & Private)
var clock = (function() {
// object to expose as public via return
var pub = {};
Object.defineProperty(pub, "now", {
get: function () {
return Date.now();
}
});
return pub;
}());
console.log(clock.now); // returns live time
或者,可以浓缩为:
//Revealing Module Pattern (Public & Private)
var clock = (function() {
// object to expose as public via return
var pub = {
get now() {
return Date.now();
}
};
return pub;
}());
console.log(clock.now); // returns live time
或者,即使只是这样(没有封闭模块模式):
var clock = {
get now() {
return Date.now();
}
};
console.log(clock.now); // returns live time
你可以用这样的 getter
var obj = {
_time : "",
get time () {
this._time = new Date();
return this._time;
},
set time(val) {
this._time = val;
}
};
document.write("<pre>" + obj.time + "</pre>");