javascript - заголовок - узнать title страницы




Javascript динамически присоединяет функции к объектам (3)

Если «прикрепить функцию динамически к объекту javascript», вы имеете в виду «добавить объект-объект как свойство объекта», то синтаксис, который вы уже показали, почти прав. Это то, что должно быть:

var fnName = "testFunc";
obj[fnName] = function() { alert("Test function"); };
// or
obj.testFunc = function() { ... };
// or
obj[fnName] = nameOfFunctionDefinedElsewhereInCurrentScope;

Это означает, что вы можете вызвать функцию attach() следующим образом:

// attach an anonymous function:
attach(obj, "newFunctionName", function() { alert(1); });
// attach a function defined elsewhere
attach(obj, "newFunctionName", someFunction);

Примечание. Функция attach() действительно не спасает никаких усилий, на самом деле это просто дает вам больше символов для ввода ...

Кстати (но не делайте этого), если параметр, который вы хотите передать в качестве code является строкой кода, выполните следующие действия:

var code = "alert(0);";
obj[fnName] = new Function(code);

Дополнительная информация: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function

Как динамически присоединить функцию к объекту javascript. Например: если функция для динамического вложения - attach (), то я должен иметь возможность присоединить функцию fn к onject obj следующим образом.

attach(
     obj,fn,{
                  alert(1)
            }
      )


function attach(obj,fnName,code)
{
    obj[fnName] = code;
}

Предполагая, что определение функции attach, вы должны называть его следующим образом:

attach(obj, fnName, function(){ alert(1); });

То, как вы его вызывали, является недопустимым синтаксисом.

Кроме того, как вы могли заметить, это не очень полезная функция, так как вы можете сделать то же самое, используя определение одной строки:

obj[fnName] = function(){ alert(1); });

Вы можете прикрепить их как объекты функций, если они уже определены, например здесь: Javascript: лучший способ добавить динамические методы?

Вы также можете использовать новый конструктор функций для динамического определения функций, например здесь: динамическое создание функций в JS

Вот объяснение различий между eval и новым конструктором Function: есть ли eval () и new Function () то же самое?

В качестве предупреждения использование eval () и нового конструктора функций вызвало споры и было осуждено (в некоторой степени) несколькими лицами, такими как здесь: законное использование конструктора Function

Вот дополнительная информация об eval: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

Ниже приведена дополнительная информация о новом конструкторе функций: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function





methods