我习惯了像这样的javascript对象构造函数
function person(first, last) {
this.firstName = first;
this.lastName = last;
}
var dude = new person("the", "dude");
但有时我看到构造函数返回“this”,就像这样
function person(first, last) {
this.firstName = first;
this.lastName = last;
return this;
}
最后回复this
会怎样?
答案 0 :(得分:2)
从构造函数返回this
没有意义,但您可以返回任何您想要的对象。如果没有显式返回任何对象,则隐式返回this
。
可能的用例是:
function person(first, last) {
if(!(this instanceof person)) {
return new person(first, last);
}
this.first = first;
this.last = last;
}
var person1 = new person('first', 'person');
var person2 = person('second', 'person'); // <- without "new"
console.log(person1, person2);
&#13;
答案 1 :(得分:0)
我所知道的唯一一个案例就是如果你以下面的方式实例化你的对象;
person.call(Object.create(person.prototype), 'Jack', 'Brown');
以上示例要求您返回this
;
可以做但应该避免的是返回与this
function person(first, last) {
return {first: first, last: last};
}
(new Person() ) instanceof Person // false
答案 2 :(得分:0)
this
,以便调用者可以将调用链接在一起。
console.log(new person('First', 'Last').firstName);