【发布时间】:2014-08-14 02:09:56
【问题描述】:
我有一个像这样初始化的对象
var x = function(){
var result = 5,
clear = function(){
result = 0;
};
return {
result: result,
clear: clear
}
}
稍后我将使用var y = new x(); 创建x 的新实例
但是当我尝试设置value y.result = 5; 并想将result 值清除为0 我打电话给y.clear();
但是它没有将y.result 重置为0...不知道为什么?
我做错了什么?
【问题讨论】:
-
数字是不可变的,顶部的
result与您返回的对象中的result不同。做一个getter函数。 -
您应该使用
var y = x();,而不是var y = new x();。x不是构造函数。 (它不会写信给this。) -
那会是什么样子?
-
clear是一个设置器,因为它设置了result变量。 getter 将返回result变量。 -
女士们先生们,这就是 Douglas Crockford 不喜欢新的原因。
标签: javascript