это - это то, как был разработан javascript (каламбур предназначен:)
По сути, «this» привязывается к текущему контексту, поэтому при вызове функции / метода, например:
var Data = function(name) {
this.name = name;
}
var myData = new Data("viky");
будет ссылаться на элемент имени «внутри» данных (т. Е. MyData в данном случае)
Теперь, если у вас есть следующее:
var Data = function(name) {
function morphName(anotherName) {
//and if you call this like this ;)
alert(this.name); //undefined
}
}
внутренняя функция morphName имеет видпривязан к «текущему» контексту, т. е. внешней функции.В javascript все является объектом, включая функции.Поэтому внешняя (анонимная) функция не имеет члена с именем name!(имеет смысл?)
Чтобы сделать , что большинство людей использует следующее (по соглашению):
var Data = function(name) {
var that = this; //capture current context. Some prefer self = this;
function morphName(anotherName) {
//then you access name like that ;)
alert(that.name);
}
}
Я предлагаю вам прочитать о замыканиях и областях javascriptчтобы понять то и это: D