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
  • Вопрос задан
  • 4971 просмотр
Решения вопроса 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
Ну... это вообще - то не нужно. А так он возвращает контекст(т.е. через кого функция вызывалась). Если интересно, читайте про области видимости
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы