var a = {};
this
в объекте:
a.test = function() { return this; };
в этом случае this
будет a
, потому что function
является членом.
a.t = function() {
var b = function() { return this; };
b();
};
В этом случае b
не является членом ничего так this
является window
.
Чтобы понять, this
просто проверьте, у кого есть функция, и если у нее нет владельца, то это будет окно. Каждая функция без владельца автоматически принадлежит окну.
Дополнительно вы можете временно изменить вызов владельца.
var b = function() {};
var c = { d: 1 };
b.call(c);
Вызов функции временно изменить владельца c
и this
будет c
.
Создание нового экземпляра.
function E() { this.h = 2; }
E.prototype = { f: 1 };
E.prototype.g = function() { return this; };
var e = new E();
e.g();
В этом случае this
является e
. prototype
- это структура, которая дает вам возможность описать, как будет выглядеть исходный объект. Здесь будет { h: 2, g: func, f: 1 }
.
вы пробовали искать "этот" JavaScript в Google? – elclanrs
Это очень маленький вопрос для очень большой проблемы. Вы должны попробовать несколько случаев, чтобы решить проблему. Ни одна статья не дает вам просто ответа на эту проблему. – Eraden
Это зависит от того, как вызывается 'VanillaBean', но, вероятно, он вызывается с помощью' new', т. Е. Как [функция конструктора] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects # Using_a_constructor_function). Это также может быть полезно: [Введение в объектно-ориентированный JavaScript] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript) –