Ingernirated
@Ingernirated
Романыч

Зачем в данном примере this, если с именем обьекта тоже работает?

Какая разница, писать название обьекта или this?
И где реальное применение this, где без this вообще никак?
var arr = {
	"name" : "Stive",
	"age" : 29,
	"all" : function() {
		return arr.name + " " + arr.age;
	}
};

var arr = {
	"name" : "Stive",
	"age" : 29,
	"all" : function() {
		return this.name + " " + this.age;
	}
};
  • Вопрос задан
  • 198 просмотров
Решения вопроса 3
myspace
@myspace
в обоих случаях вы сразу создаете экземпляр объекта и arr.name является статикой. Если например юзать конструктор
function Human(name) {

            Human.country = 'USA';
            this.name = name;
            console.log('Имя: '+this.name);
            console.log('Страна: '+Human.country);

        }

        let vasya = new Human('Вася');
        let maria = new Human('Маша');

90cf527ab22d4cf28e875283b3dbe0ca.png
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
В вашем примере разницы нет и this удобнее только тем, что при переименовании "arr" не придётся ещё две замены делать.

Хотя, если дальше вы используете наследование, то разница принципиальна. Например, создать новый объект, используя arr как прототип:
var arr = {
  "name" : "Stive",
  "age" : 29,
  "all" : function() { return this.name + " " + this.age; }
};
var b = Object.create(arr);
b.name = "Bill";
b.age = 39;
b.all();

С this в arr код для b выполнится нормально и вернёт "Bill 39", а если в arr вместо this было прямое указание на arr, то вернёт "Stive 29".
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
где без this вообще никак?


function Arr() {
  this.name = "Stive",
  this.age = 29,
  this.all = function() {
    return this.name + " " + this.age;
  }
};

var arr = new Arr();
console.log(arr.all());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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