该
Object.freeze()方法冻结了一个对象:即阻止向其添加新属性; 防止删除现有属性; 并防止现有属性或其可枚举性,可配置性或可写性被更改.实质上,该对象实际上是不可变的.该方法返回被冻结的对象.
我原以为在日期上调用冻结会阻止对该日期的更改,但它似乎不起作用.这是我正在做的(运行Node.js v5.3.0):
let d = new Date()
Object.freeze(d)
d.setTime(0)
console.log(d) // Wed Dec 31 1969 16:00:00 GMT-0800 (PST)
Run Code Online (Sandbox Code Playgroud)
我本以为setTime要么失败要么无所事事.任何想法如何冻结日期?
我在js bin中有这个代码:
var validator = {
set (target, key, value) {
console.log(target);
console.log(key);
console.log(value);
if(isObject(target[key])){
}
return true
}
}
var person = {
firstName: "alfred",
lastName: "john",
inner: {
salary: 8250,
Proffesion: ".NET Developer"
}
}
var proxy = new Proxy(person, validator)
proxy.inner.salary = 'foo'
Run Code Online (Sandbox Code Playgroud)
如果我这样做proxy.inner.salary = 555;不起作用.
但是,如果我这样做proxy.firstName = "Anne",那么它的效果很好.
我不明白为什么它不起作用递归.