log4net и ints

Снятый части с одной машины для ремонта других из другого моего сообщения, вот больше, чем Вы когда-нибудь хотели знать [приблизительно 1 110] это .

, Прежде чем я запущу, вот самая важная вещь иметь в виду о JavaScript и повториться себе, когда это не имеет смысла. JavaScript не имеет классов (ES6 class синтаксический сахар ). Если что-то похоже на класс, это - умный прием. JavaScript имеет объекты и функции . (это не на 100% точно, функции являются просто объектами, но может иногда быть полезно думать о них как об отдельных вещах)

этот , переменная присоединена к функциям. Каждый раз, когда Вы вызываете функцию, этому дают определенное значение, в зависимости от того, как Вы вызываете функцию. Это часто называют шаблоном вызова.

существует четыре способа вызвать функции в JavaScript. Можно вызвать функцию как метод , как функция , как , конструктор , и с [1 116] подает заявку .

Как Метод

метод А является функцией, это присоединено к объекту

var foo = {};
foo.someMethod = function(){
    alert(this);
}

, Когда вызвано как метод, это будет связано с объектом, которого функция/метод является частью. В этом примере это будет связано с нечто.

Как Функция

, Если у Вас есть одинокая функция, этот , переменная будет связана с "глобальным" объектом, почти всегда объект окна в контексте браузера.

 var foo = function(){
    alert(this);
 }
 foo();

Это может быть тем, что смещается Вы , но не плохо себя чувствовать. Многие люди считают это плохим проектным решением. Так как обратный вызов вызывается как функция и не как метод, вот почему Вы видите то, что, кажется, непоследовательное поведение.

Многие люди обходят проблему путем выполнения чего-то как, гм, это

var foo = {};
foo.someMethod = function (){
    var that=this;
    function bar(){
        alert(that);
    }
}

Вы определяете переменную , что , который указывает на [1 121] это . Закрытие (тема все свои собственные) сохраняет , что вокруг, поэтому при вызове панели как обратного вызова это все еще имеет ссылку.

ПРИМЕЧАНИЕ: В use strict режим, если используется, поскольку функция, this не связывается с глобальным. (Это undefined).

Как Конструктор

можно также вызвать функцию как конструктор. На основе соглашения о присвоении имен Вы используете (TestObject), это также может быть тем, что Вы делаете, и то, что смещается Вы .

Вы вызываете функцию как Конструктор с новым ключевым словом.

function Foo(){
    this.confusing = 'hell yeah';
}
var myObject = new Foo();

, Когда вызвано как конструктор, новый Объект будет создан, и это будет связано с тем объектом. Снова, если у Вас будут внутренние функции, и они используются в качестве обратных вызовов, Вы будете вызывать их как функции, и это будет связано с глобальным объектом. Используйте тот var это = этот прием/шаблон.

Некоторые люди думают, ключевое слово конструктора / новое ключевое слово были костью, брошенной в программистов ООП Java / традиционных программистов ООП как способ создать что-то подобное классам.

С Применять Методом

Наконец, каждая функция имеет метод (да, функции являются объектами в JavaScript), названный, "применяются". Подайте заявку позволяет Вам определить то, чем значением [1 125] это будет, и также позволяет Вам передать в массиве аргументов. Вот бесполезный пример.

function foo(a,b){
    alert(a);
    alert(b);
    alert(this);
}
var args = ['ah','be'];
foo.apply('omg',args);

7
задан Dofs 4 December 2009 в 09:17
поделиться