Javascript 如何将函数发送给父对象,然后在子对象内部使用它?
我正在尝试实现以下编码行为:Javascript 如何将函数发送给父对象,然后在子对象内部使用它?,javascript,Javascript,我正在尝试实现以下编码行为: addAssetsTab(false, false, false).action = addAssetAction; 函数addAssetsTab将返回一个对象,其中包含一个名为action的函数,然后我希望将该函数设置为当前范围内的某个函数,并且我希望在调用action后,子对象可以使用该函数 var tabs = []; addPeopleTab = function (filter, sort, viewModes) {
addAssetsTab(false, false, false).action = addAssetAction;
函数addAssetsTab将返回一个对象,其中包含一个名为action的函数,然后我希望将该函数设置为当前范围内的某个函数,并且我希望在调用action后,子对象可以使用该函数
var tabs = [];
addPeopleTab = function (filter, sort, viewModes) {
var promise = { action: function () { } };
tabs.push(
angular.extend({}, DataTemplates.headerContextualTab, {
id: 'people',
label: 'People',
classes: 'icon-group',
count: 0,
action: promise.action,
filter: filter,
sort: sort,
viewModes: viewModes
}))
return promise;
};
显然,由于某种原因,一旦我返回名为promise的对象,对名为promise的本地对象的引用就会丢失。我尝试返回一个函数,但引用也会丢失。知道如何执行吗?问题不在于如何返回
promise
,或设置promise.action
;这是您如何将promise.action
函数传递给angular.extend
;您正在传递函数引用,因此当您稍后更新promise.action
(指向新函数引用)时,扩展对象仍指向旧函数引用
相反,你可以这样做
angular.extend({}, DataTemplates.headerContextualTab, {
id: 'people',
label: 'People',
classes: 'icon-group',
count: 0,
action: function () {
return promise.action.apply(this, arguments);
},
filter: filter,
sort: sort,
viewModes: viewModes
}));
这样,由于它持有对
promise
的引用,因此它将始终能够解析为promise.action
的当前值。使用可以将传递给action
方法的参数转发给promise.action
方法 我现在明白了,您之所以传递对当前承诺的引用,是因为您没有通过将action的值包装在匿名函数中来解析它:)。该死!以前怎么没想到啊哈哈,谢谢:)