В следующем коде, когда я выполняю функцию трассировки, а переменная «оригинал» присваивается o [m], которая не определена первоначально, но как только я определяю o [m] как вложенная функция внутри функции трассировки и трассировки. Я ожидаю, что значение «исходной» переменной должно быть вновь определено вложенной функцией, но, к моему удивлению, она все еще не определена. Я не понимаю, почему?Переменная JavaScript не определена даже после назначения метода свойства объекта
var o = {};
function trace(o, m) {
var original = o[m];
o[m] = function() {
alert(new Date(), "Exiting:", m);
var result = original.apply(this, arguments);
alert(new Date(), "Exiting:", m);
alert(result);
};
}
trace(o, "m");
o.m("My JavaScript");
Получил вас, я бы помнил это как правило, что в идентификаторах JS не обновляется. – user2913184
Можете ли вы прочесть o = fizz немного больше с точки зрения кода? Спасибо за всю помощь – user2913184
@ user2913184, если вы сделали 'e = o' (после' o = fizz') ** или ** 'e = fizz', тогда у вас будут все 3, указывающие на одно и то же. Вам просто нужно обновлять каждый идентификатор вручную. Кроме того, 'e.prop()' никогда не должен вызывать ошибку в написанном мной коде. ** 'o.prop()' ** выдает ошибку в разделе о 'fizz'. –