如何在javascript函数中将对象的属性名称作为参数传递?

时间:2017-04-11 11:27:11

标签: javascript jquery

我有以下功能



self._eventLogger({
          name: 'SeekerCredentialingIntroPageView'
        });
        this.lastBGCRequestStatus(self._eventLogger.name);




我无法在name功能之外访问self._eventLogger()lastBGCRequestStatus()函数接受一个参数,我想将我的名称变量作为参数传递。

我尝试过以下解决方案:

this.lastBGCRequestStatus(self._eventLogger.name);

this.lastBGCRequestStatus(self._eventLogger['name']);
没有运气。

有人可以建议我以其他方式这样做吗?

3 个答案:

答案 0 :(得分:3)

你可以试试这个:

var obj = { name: 'SeekerCredentialingIntroPageView' };
self._eventLogger(obj);
this.lastBGCRequestStatus(obj.name);

_eventLogger中传递您此时创建的对象。因此,您以后无法访问它的属性,因为唯一知道该对象引用的人将是您传递其副本的函数。

答案 1 :(得分:3)

  

我无法访问' name' self._eventLogger()函数之外的

嗯......不,因为您正在将对象传递给它而没有保留对该对象的引用,name是该对象的属性。将参数传递给函数并不会修改函数(除非函数代码执行此操作)。

如果要在将对象传递给函数后使用该对象,请保留对它的引用:

var event = {
      name: 'SeekerCredentialingIntroPageView'
};
self._eventLogger(event);
this.lastBGCRequestStatus(event.name);

附注:从ES2015开始(又名" ES6"),函数具有内置的name属性。支持仍然有点不稳定,但使用原始代码,您可以很容易地将"_eventLogger"传递到lastBGCRequestStatus。 : - )

答案 2 :(得分:3)

您可以这样做:

var myName = 'SeekerCredentialingIntroPageView';
self._eventLogger({name: myName});
this.lastBGCRequestStatus(myName);