您应该使用“ this”还是直接引用javascript中的父对象?

时间:2019-06-10 11:20:27

标签: javascript

在我的程序中,有些情况下,您可以使用“ this”或直接引用父对象(我们称其为Parent)来执行相同的功能。

let Parent = {};

Parent.func = function (foo) {
  this.bar = foo; // option 1
  Parent.bar = foo; // option 2
}

使用其中一个选项是否有任何理由(也许是效率或代码惯例)?

例如,“ this”关键字引用时间比Parent花费更多/更少的时间,还是可以忽略不计?还是人们通常会在示例中看到使用“ this”(例如,这是一种不好的做法或更难于阅读(或者相反))?

1 个答案:

答案 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>

不完全一样,因为这是原型上的一种方法,但是总体思路是相似的。