在我的程序中,有些情况下,您可以使用“ this”或直接引用父对象(我们称其为Parent)来执行相同的功能。
let Parent = {};
Parent.func = function (foo) {
this.bar = foo; // option 1
Parent.bar = foo; // option 2
}
使用其中一个选项是否有任何理由(也许是效率或代码惯例)?
例如,“ this”关键字引用时间比Parent花费更多/更少的时间,还是可以忽略不计?还是人们通常会在示例中看到使用“ this”(例如,这是一种不好的做法或更难于阅读(或者相反))?
答案 0 :(得分:2)
使用this
的一个原因是它更具可组合性-如果需要,可以在{em> other 之外的其他对象上调用Parent
,并且具有灵活性的优点作为一种选择。例如:
let Parent = {};
Parent.func = function (foo) {
this.bar = foo;
}
const parentLikeObject = {};
Parent.func.call(parentLikeObject, 'parentLikeFoo');
console.log(parentLikeObject);
如果您在Parent
中引用了this
而不是.func
,那么这种事情将是不可能的。
引用对象(调用this
)是一种非常常见的模式,它允许使用更多可重用的代码。例如,这是如何在不支持forEach
的较旧浏览器上的NodeList上使用NodeList.prototype.forEach
的方式:
Array.prototype.forEach.call(
document.querySelectorAll('div'),
div => console.log(div.textContent)
);
<div>foo</div>
<div>bar</div>
不完全一样,因为这是原型上的一种方法,但是总体思路是相似的。