Причина
В тот день я использовал прототип.
Propotypepe.js код фрагмент
Код заключается в следующем:
var class = {
Create: function () {
Return function () {
this.initialize.apply (это, аргументы);
}
}
}
// метод использования класса выглядит следующим образом
var a = class.create ();
A. Prototype = {
инициализировать: function (v) {
это значение = V;
}
ShowValue: function () {
предупреждение (this.value);
}
}
var a = new a ('helloord!');
А.
l Инициализировать?
Что делает метод применения L?
L Аргументы переменная?
l Почему метод инициализации выполняется после нового A?
Найдите ответ:
Во -вторых, JS Targeting Object
Что такое инициализировано?
Это просто переменная, представляющая метод, и использование является конструктором класса.
Конкретная функция поддерживается JS, так что же является объектом JS? Что то же самое и отличается от Java?
Посмотрите на код:
Код заключается в следующем:
Код кода копирования следующим образом:
var classname = function (v) {{{
this.value = v;
this.getValue = function () {
Вернуть это.
}
this.setValue = function (v) {
this.value = v;
}
}
Итак, в чем разница между функциями и классами в JS?
На самом деле, это то же самое.
нравиться
Код заключается в следующем:
Var objectName1 = new ClassName ("a");
Среди них ObjectName1 является объектом, полученным после выполнения конструктора ClassName, и это в функции ClassName относится к объекту, построенному после нового, SO, поэтому ObjectName1 будет иметь один атрибут и два метода после следующего. Вы можете позвонить им через это:
Код заключается в следующем:
ObjectName1.SetValue ('' Hello '');
Alert (ObjectName1.getValue ());
Alert (ObjectName1.value);
Так
Код заключается в следующем:
var objectName2 = classname ("b");
Так что же получает ObjectName2? Очевидно, что возвращаемое значение метода, здесь имя класса используется только в качестве обычной функции (хотя первая буква капитализируется). Но в предыдущем названии класса нет возврата, поэтому ObjectName2 будет неожиданным, так кто дает "B"? Здесь нет объекта, но просто выполнение этого метода просто, поэтому этот «B» назначен окну объекта, которое вызывает этот метод.
var objectName2 = classname ("b");
Alert (window.value);
Таким образом, все функции в JS одинаковы, но использование может быть различным (используется для построения объектов или выполнения процесса).
Давайте вернемся к теме, что делает инициализировать?
Код заключается в следующем:
Код кода копирования следующим образом:
var class = {
Create: function () {
Return function () {
this.initialize.apply (это, аргументы);
}
}
}
var a = class.create ();
Этот код должен построить копию функции в A, эта функция
Код заключается в следующем:
Код кода копирования следующим образом:
Function () {
this.initialize.apply (это, аргументы);
}
И последний метод используется для создания конструктора. При использовании этого конструктора для построения объекта он позволит методу начального () инициализации переменной конструктора, выполненного методом Apply (). Таким образом, с ним свяжутся при инициализированных объектах (как связаться с применением).
Так
Код заключается в следующем:
Код кода копирования следующим образом:
A.prototype = {
инициализировать: function (v) {
это значение = V;
}
ShowValue: function () {
предупреждение (this.value);
}
}
Что это значит?
Прототип означает «прототип». A - это функция (), тогда A. Прототип является переменной по функции, которая на самом деле является объектом. Какой метод имеет этот объект, так какой метод создает объект функцией?
var a = new a ('helloord!');
А.
Поэтому объект также будет иметь инициализированный метод. '), Инициализация вернулась, чтобы вызвать метод применения. Это метод вызова инициализации.
3. Call () и Apply ()
Давайте начнем изучение Apply (), найдите несколько информации в Интернете и объедините свое собственное исследование, чтобы понять функции Call () и Apply ().功能基本一样 , function (). Call (Object, {}, {} ……) 或者 function (). Применить (объект, [……]) 的功能就是对象 объект 调用这里的 funciton () , 不同之处是Параметр вызова передается в Funciton от второго. Применить имеет только два параметра, а второй - массив, в котором хранится все параметры, передаваемые функциям.
this.initialize.apply (это, аргументы);
Что это значит?
Первое это здесь относится к объекту, сгенерированному после вызова конструктора с новым вызовом, который является предыдущим A, затем, конечно, во втором, что это также должно относиться к тому же объекту. Затем это предложение - это (то есть а) для вызова метода инициализации, а параметр является объектом аргументов (количество массива параметров).
Итак, как передать параметры метода инициализации?
В -четвертых, аргументы объект
Этот код может все объяснить:
Код заключается в следующем:
Код кода копирования следующим образом:
функциональный тест () {
Оповещение (аргументы типа);
for (var i = 0; i <arguments.length; i ++) {
Оповещение (аргументы [i]);
}
}
тест ("1", "2", "3");
тест ("a", "b");
После выполнения, оповещение (аргументы TypeOF); Затем играйте 1, 2 и 3 по очереди. Объясните, что аргументы являются твердым массивом вызова функции.
Код заключается в следующем:
Код кода копирования следующим образом:
var class = {
Create: function () {
Return function () {
this.initialize.apply (это, аргументы);
}
}
}
Аргументы - это твердый массив конструирования функций, возвращаемых Create, затем
var a = new a ('helloord!');
Во время «HelloWord!