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的值包装在匿名函数中来解析它:)。该死!以前怎么没想到啊哈哈,谢谢:)