Задать вопрос
BeriaFantom
@BeriaFantom
Full Stack Razrabotchik

Что делает return this?

Весь код, за исключением return this;, я понимаю. Но мне не понятна суть самостоятельного this, даже если вместо него подставить Person. this.name, например, понятен, но что значит вернуть сам объект? ведь возвращается не сам объект, а то свойство, которое мы вызвали. Поясните, пожалуйста, доступным языком.
var Person = {
	constructor: function(name, age, gender) {
		this.name = name;
		this.age = age;
		this.gender = gender;
		return this;
	},
	greet: function() {
		console.log('Hi! My name is ' + this.name);
	}
};

var person = Object.create(Person).constructor('Bill', 32);

// Например, вызываем свойство name.
console.log(person.name); // Bill
  • Вопрос задан
  • 5131 просмотр
Подписаться 2 Оценить 6 комментариев
Решения вопроса 1
Если издалека, то в this.method() this - объект, в контексте которого вызывается method(), а this без методов и свойств - просто объект(ссылка на него)
var obj = {
  name: 'Вася',
  age: 30,
  method: function() {
    return this; // здесь this является obj
  }
}
var b = obj.method();
alert(b.name); //Вася
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@bernex
В JavaScript this работает иначе других языков.
Это контекст в котором выполняется функция, по-сути это данный объект или любой другой назначенный.

Если изучить это, сразу станет понятнее.

function plus() {
	return this.a;
}

var obj = {a:3};

alert(plus()); // undefined - не задано

var result = plus.call(obj) // вызываем в контексте определенном.

alert(result)   // => 3


Причем если это функция, this = windows окна, если в классе, то prototype его(новый объект).
demo.someFunction(params) => тут this = demo
Ответ написан
Комментировать
abyrkov
@abyrkov
JavaScripter
Ну... это вообще - то не нужно. А так он возвращает контекст(т.е. через кого функция вызывалась). Если интересно, читайте про области видимости
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы