【发布时间】:2011-03-26 23:43:28
【问题描述】:
我正在研究 JavaScript 中的 getter 和 setter,以及它们如何与扩展对象的扩展函数配合使用,例如 jQuery 的 $.extend 和 Underscore 的 _.extend。代码设置如下:
var test = {
get size() { return this._size; },
set size(val) { this._size = val; },
}
test.size = "LARGE";
console.log(test.size);
//$.extend(test, { get size() { return "MEDIUM"; } });
_.extend(test, { get size() { return "MEDIUM"; } });
console.log(test.size);
test.size = "SMALL";
console.log(test.size);
在 Chrome 和 Firefox 中我得到:
LARGE
MEDIUM
SMALL
谁能解释一下那里发生了什么?为什么调用原来的setter后,原来的getter也恢复了?
【问题讨论】:
-
我认为 getter 替换了原始的 setter 和 getter,最后它只是将属性
size设置为“SMALL”。最后做console.log(this._size);,看看你会得到什么.. -
@JCOC611 - 我不这么认为。请参阅我的答案以获得解释。
标签: javascript extend setter getter