Функции JavaScript отличаются от других языков. Каждая функция поддерживается и запускается как объект. С помощью свойств объектов-функций вы можете легко присвоить функцию переменной или передать функцию в качестве параметра. Прежде чем продолжить, давайте посмотрим на синтаксис использования функций:
Вот цитата:
функция func1(…){…}
вар func2=функция(…){…};
var func3=function func4(…){…};
вар func5 = новая функция ();
Скопируйте код кода следующим образом:
<тип сценария="текст/javascript">
// 1, режим вызова метода
// Когда функция сохраняется как свойство объекта, мы называем ее методом объекта, тогда она привязывается к объекту
вар myObject={
имя: "мойОбъект",
значение: 0,
приращение: функция (число) {
this.value += typeof(num) === 'number' ?
верните это;
} ,
toString : функция(){
return '[Объект:' + this.name + ' {value:' + this.value + '}]';
}
}
alert(myObject.increment(10).increment(20).toString() // [Объект:myObject {значение:30}]
// 2, режим вызова функции
// Когда функция не является функцией объекта, она вызывается как функция и привязывается к глобальному объекту. Это ошибка в языковом дизайне. Если конструкция языка правильна, то при вызове внутренней функции она все равно должна быть привязана к переменной this внешней функции.
вар myObject={
имя: "мойОбъект",
значение: 0,
приращение: функция (число) {
this.value += typeof(num) === 'number' ?
верните это;
} ,
toString : функция(){
return '[Объект:' + this.name + ' {value:' + this.value + '}]';
},
getInfo: функция() {
вар self = это;
возврат (функция() {
//return this.toString(); // Это во внутренней анонимной функции указывает на окно глобального объекта и выводит [object Window]
return self.toString(); // Определите переменную selft и присвойте ей значение this, тогда внутренняя функция сможет получить доступ к этому указателю на объект через эту переменную
})();
}
}
alert(myObject.increment(10).increment(20).toString() // [Объект:myObject {значение:30}]
// 3, режим вызова конструктора
// JavaScript — это язык, основанный на прототипном наследовании, что означает, что объекты могут наследовать свойства непосредственно от других объектов, и язык является бесклассовым.
// Если функция вызывается с new впереди, будет создан новый объект, который скрывает член-прототип, подключенный к функции, и он будет привязан к экземпляру конструктора.
функция MyObject(имя){
this.name = имя || 'МойОбъект';
это.значение=0;
this.increment = функция (число) {
this.value += typeof(num) === 'number' ?
};
this.toString = функция(){
return '[Объект:' + this.name + ' {value:' + this.value + '}]';
}
this.target = это;
}
MyObject.prototype.getInfo = функция(){
вернуть this.toString();
}
// Одновременно создаем объект MyObject.prototype. myObject наследует все свойства MyObject.prototype. Это связано с экземпляром MyObject.
вар myObject = новый MyObject();
мойОбъект.инкремент(10);
оповещение(мойОбъект.значение); //10
вар другойОбъект = новый MyObject();
другойОбъект.инкремент(20);
оповещение(другойОбъект.значение); //20
alert(myObject.target===myObject); // true);
alert(myObject.target.getInfo()); // [Объект:MyObject {значение:10}]
// 4, применить режим вызова
// JavaScript — это функциональный объектно-ориентированный язык программирования, поэтому функции могут иметь методы. Метод Apply функции действует так, как если бы этот метод был у объекта, и он указывает на объект.
// apply получает два параметра: первый — это объект, который нужно привязать (объект, на который указывает this), а второй — массив параметров.
функция MyObject(имя){
this.name = имя || 'МойОбъект';
это.значение = 0;
this.increment = функция (число) {
this.value += typeof(num) === 'number' ?
};
this.toString=function(){
return '[Объект:'+this.name+' {value:'+this.value+'}]';
}
this.target=это;
}
функция getInfo(){
вернуть this.toString();
}
вар myObj = новый MyObject();
alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}], это указывает на myObj
alert(getInfo.apply(window)); //[окно объекта], это указывает на окно
// на время и пока
функция func(a,b){
предупреждение(а); // 1;
оповещение(б); // 2;
for(var i=0;i<arguments.length;i++){
оповещение(аргументы[i]); // 1, 2, 1, 2, 3
}
вар я = 0;
while(i<arguments.length){
оповещение(аргументы[i]); // 1, 2, 1, 2, 3
я=я+1;
}
}
функция (1,2,3);
вар я = 0
для (i=0;i<=10;i++) {
document.write("Число: " + i + "<br/>")
}
</скрипт>