在对象内部的函数中访问对象的属性

时间:2020-06-04 10:06:03

标签: javascript object

这只是一个废话的例子,但它完美地描述了我的问题。

对象函数的以下调用为undefined属性提供了bird

const birds = {
 species:['Grey tinamou','Greater rhea','Dwarf cassowary'],
 bird: 'Bird',
 summary: function(){
  return this.species.map(function(species) {
   return `${species} is a ${this.bird}`;
  });
 }
};

birds.summary();

1)如何访问对象函数中的bird属性?

2.1)是否可以在不传递bird属性值本身的情况下执行此操作?

像这样:birds.summary(birds.bird);

2.2)有没有更好/另一种方法?

1 个答案:

答案 0 :(得分:0)

在常规函数中,this是调用该函数的对象。如果调用birds.func(),则在此函数this === birds中。如果像func()一样调用函数,则上下文将为window(严格模式下为undefined)。在传递给地图的回调函数中,thiswindowundefined。箭头函数的工作方式不同-它从声明的上下文继承this

使用()=> {}从函数this继承summary

this.species.map((species) => {...

并阅读有关this的信息。