Пытаясь понять this
, нашел пример в javascript the good parts
книге:Понимать `this` в вызов конструктора Pattern
var first;
var second;
var Quo = function(string) {
first = this;
this.status = string;// first this
};
Quo.prototype.get_status = function() {
second = this;
return this.status;//second this
};
var myQuo = new Quo("confused");
console.log(myQuo.get_status());
console.log((first===second) + ',' + (second===myQuo) + ',' + (first===myQuo));
Выход:
$ node test.js
confused
true,true,true
ли первый this
и второй this
как пункт myQuo
? Как распечатать имя объекта или имя функции или имя класса, на которое указывают this
? (Действительно смущен this
в настоящее время.)
UPDATE
Другими вопросы: Оба this
относятся к экземпляру Quo вместо прототипа Quo в?
Кроме того, пытаясь:
console.log(myQuo.get_status());
console.log(first.constructor.name);
console.log(first);
console.log(second);
Выход:
confused
{ status: 'confused' }
{ status: 'confused' }
Почему first.constructor.name
ничего? Почему first
является { status: 'confused' }
?
'this' означает экземпляр внутри конструктора. – dandavis
@ dandavis Они все должны указывать на один и тот же экземпляр 'myQuo'. Ваш комментарий на самом деле не имеет смысла –
Что это за первый и второй? На какие из них вы ссылаетесь? –