Например, определите два метода вызова для функции:
Кода -копия выглядит следующим образом:
функция getInfo () {
var info = {
Сообщение: "Сообщение"
};
вернуть информацию;
}
1. var info1 = getInfo ();
2. var info2 = new getInfo ();
Есть ли разница между 1 и 2? Получены ли значения Info1 и Info2 одинаковы?
Первый тип очень прост и использует много, чтобы выполнить функцию, принять возвращаемое значение функции и назначить ее объекту Info1;
Вторая ситуация, как правило, редкая. Прежде всего, функция также является объектом. Если объект уверен, он может быть создан (экземпляр фактически вызывает конструктор объекта для инициализации объекта). Все второй случай состоит в том, чтобы вызвать конструктор объекта функции GetInfo и получить экземпляр, инициализированный конструктором (обычно это). Более особая вещь о функции заключается в том, что если конструктор отображает возвращаемое значение, возвращаемое значение будет заменено на возвращаемое значение. Таким образом, во втором случае New GetInfo - вызов конструктора (конструктор функции - это само определение) и получить информацию о возвратном значении.
приложение:
1. Например, HTML определяет объект DOM: <div id = "domid"> </div>, код JS выглядит следующим образом:
Кода -копия выглядит следующим образом:
функция $ (domid) {
var dom = document.getElementbyId (domid);
вернуть dom;
}
window.onload = function () {
var dom1 = new $ ("domid");
var dom2 = $ ("domid");
оповещение (DOM1 == DOM2);
}
Тогда сообщение о приглашении оповещения будет отображать true. Причина, по которой я использую $ в качестве имени функции, заключается в том, что при использовании этой функции это немного похоже на стиль jQuery? На самом деле, этот стиль определения функции применяется к конструктору jQuery. Независимо от того, используете ли вы новую или вызовите функцию напрямую, возвращаемое значение одинаково.
2. Определите совместимый объект xmlhttprequest (этот пример выдержек из раздела 18.1 авторитетного руководства JavaScript)
Все знают, что разные браузеры могут по -разному поддерживать асинхронные связи. Ранние IES использовали методы ActiveX. Следующий код определяет совместимый объект xmlhttprequest:
Кода -копия выглядит следующим образом:
if (window.xmlhttprequest === undefined) {
window.xmlhttprequest = function () {
пытаться {
// Если доступно, используйте последнюю версию объекта ActiveX
return new ActivexObject ("msxml2.xmlhttp.6.0");
} catch (ex1) {
пытаться {
вернуть новый ActiveXObject ("msxml2.xmlhttp.3.0");
} catch (ex2) {
Выбросить новую ошибку («Xmlhttprequest не поддерживается»)
}
}
}
}
Таким образом, вы можете напрямую определить его через var xhr = new xmlhttprequest (), независимо от того, является ли это браузером IE или браузером Firefox.