我有下面的代碼片斷:JavaScript變量訪問錯誤
var ret_ = function(x){
return x;
}
var make_cps=function(x,c_){
return c_(x);
}
var pred = {
_position: 0,
setPosition: function (i) {
_position = i
},
getPosition: function() {
return _position
},
_size: 0,
setSize: function (i) {
_size = i
},
getSize: function() {
return _size
},
_context: null,
setContext: function (x) {
_context = x
},
run: function() {
return function (c_) {
return make_cps(_position, c_);
}(ret_) == 2;
}
}
當運行它象下面,它運行正確:
pred.setPosition(2)
pred.setSize(10)
pred.setContext(null)
var res = pred.run()
console.log(res) // Output: true
但如果我更換_position
到getPosition()
發生錯誤因爲getPosition()
未定義。另外,如果我改變this.getPosition()
它說this
沒有一個成員叫getPosition()
var pred = {
_position: 0,
setPosition: function (i) {
_position = i
},
getPosition: function() {
return _position
},
_size: 0,
setSize: function (i) {
_size = i
},
getSize: function() {
return _size
},
_context: null,
setContext: function (x) {
_context = x
},
run: function() {
return function (c_) {
return make_cps(this.getPosition(), c_); // gives Error here
}(ret_) == 2;
}
}
請人扔光這個問題。
難道是因爲這是一個'c_',這不是在這種情況下定義的? – YePhIcK 2012-07-25 12:04:34
@YePhIcK c_被定義,它由函數的ret_參數提供。我也會添加ret_和make_cps。 – weima 2012-07-25 12:06:30