以下构造函数是用 JavaScript / ES5 编写的 -
function Range(from, to) {
function getFrom() { return from; }
function getTo() { return to; }
function setFrom(f) { from = f; }
function setTo(t) { to = t; }
Object.defineProperties(this, {
fromProp: { get: getFrom, set: setFrom, enumerable: true, configurable: false },
toProp: { get: getTo, set: setTo, enumerable: true, configurable: false }
});
};
我使用此构造函数创建一个对象,如下所示 -
var range = new Range(4, 13);
我对对象创建的一般理解是,构造函数内部应该有一些代码,在实例化对象之后,将使用我通过参数传递给构造函数的值进行初始化range
。但我很难理解这到底是怎么发生的。fromProp
toProp
或者,这里的整个“初始化/访问属性”是在 setter/getter 调用的闭包中捕获的吗?但如果是这样,那么在我使用的任何时候——
range.fromProp = 22;
值 22 实际上永远不会设置为range
对象的属性fromProp
,而是设置为参数变量from
,然后每当我要求时 -
var fromValue = range.fromProp;
它只是把参数变量的当前值交给我from
。我做对了吗,还是遗漏了什么?
对此事有何解释?