我正在阅读系列丛书你不懂JS 。在其中一本书中写道:
如果在[[Prototype]]链上发现foo更高,那么它就是一个setter (见第3章),然后将始终调用setter。没有foo 添加到(也称为阴影)myObject,foo setter也不会 重新定义。
现在我尝试了以下代码:
var a = {
set t(tet) {
this._t_ = tet;
},
get t() {
return this._t_ ;
}
};
a.t = 5;
var b = Object.create(a);
b.t = 4;
console.log(a.t);
console.log(b.t);
令我惊讶的是,日志按此顺序打印出5
和4
。根据书中的内容,我希望看到两个4
正在打印,但似乎实际上是阴影。那是为什么?
感谢Quentin的回答,这实际上是展示我想要的功能的代码:)
var a = {
t : undefined,
set t(tet) {
t = tet;
},
get t() {
return t ;
}
};
a.t = 5;
var b = Object.create(a);
b.t = 4;
console.log(a.t);
console.log(b.t);
答案 0 :(得分:1)
map(:)
和do {
if let jsonArray = try NSJSONSerialization
.JSONObjectWithData(data, options: []) as? [[String: AnyObject]] {
for element in jsonArray {
let customer = Mapper<Customer>().map(element)
print(customer) // customer is of type Customer?
}
} else {
/* ... */
}
}
catch let error as NSError {
print(error)
}
存储在4
的两个不同对象上,而不是5
。
_t_
仍然是setter和getter(尽管t
的值不同,因为它是在两个不同对象的上下文中调用的。)