Mil*_*uzz 1 javascript oop object
我有一个默认值的构造函数:
var myObject = function(){
this.myValue = "default";
}
Run Code Online (Sandbox Code Playgroud)
然后我实例化一个新对象:
var newInstance = new myObject();
Run Code Online (Sandbox Code Playgroud)
如何判断是否myValue为原始默认值,并且尚未重新分配.我无法检查该值,因为它可以设置为相同,并且会产生误报.
if (newInstance.hasOwnProperty('myValue')) {
// original default value
}
Run Code Online (Sandbox Code Playgroud)
但是,这将无法告诉您这是否发生:
newInstance.myValue = 'default';
Run Code Online (Sandbox Code Playgroud)
要检测到这一点,您需要使用getter/setter之类的东西并跟踪私有变异标记:
function myObject() {
var _myValue = "default";
var _wasMutated = false;
return {
get myValue() {
return _myValue;
},
set myValue(x) {
_myValue = x;
_wasMutated = true;
},
get wasMutated() {
return _wasMutated;
}
}
}
// usage:
var newInstance = new myObject();
newInstance.myValue; // "default"
newInstance.wasMutated; // false
newInstance.myValue = "default";
newInstance.wasMutated; // true
newInstance.wasMutated = false; // writes have no effect since there's no setter
newInstance.wasMutated; // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |