Я думал JavaScript, ниже, приведет к obj.fn
работать в контексте entryPoint().
Функция-вызова контекстного
Но когда obj.fn()
работает, 'locVar is undefined'
исключение.
function entryPoint() {
var locVar = "xxx";
var obj = {};
PassRcvr(obj);
obj.fn();
}
function PassRcvr(passedObj) { // Being an object, the arg is passed by reference.
passedObj.fn = function () {
alert(locVar);
}
}
JScript, ниже, однако делает бег с осознанием locVar.
function entryPoint() {
var locVar = "xxx";
var obj = {};
PassRcvr(obj);
obj.fn();
function PassRcvr(passedObj) {
passedObj.fn = function () {
alert(locVar);
}
}
}
Почему не obj.fn()
известно о том контексте, в котором оно называется, в обоих случаях, а не только один?
Javascript является лексически (или «статическим») языком, который вам нужен, является «динамическим» охватом. Есть языки, которые его поддерживают, но Javascript этого не делает. – georg