Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从嵌套对象调用函数?_Javascript - Fatal编程技术网

Javascript 如何从嵌套对象调用函数?

Javascript 如何从嵌套对象调用函数?,javascript,Javascript,我有一个名为obj的对象,它有一个嵌套对象comments,还有一个函数startMatch,返回如下对象: var obj = {}; obj.comments = { startMatch: function(matchStrings, isCaseSensitive) { return { subscribe: function(delegate) { delegate('test') const unsubscribe = () =

我有一个名为
obj
的对象,它有一个嵌套对象
comments
,还有一个函数
startMatch
,返回如下对象:

var obj = {};
obj.comments = {
  startMatch: function(matchStrings, isCaseSensitive) {
    return {
      subscribe: function(delegate) {
        delegate('test')
        const unsubscribe = () => {
          console.log("unsubscribed");
        };
      }
    };
  }
};

var subscription = obj.comments.startMatch([], false).subscribe(function(result) {
  console.log(result)
});
subscription.unsubscribe();
我想这样做,我可以像这样调用
unsubscribe
函数:

var obj = {};
obj.comments = {
  startMatch: function(matchStrings, isCaseSensitive) {
    return {
      subscribe: function(delegate) {
        delegate('test')
        const unsubscribe = () => {
          console.log("unsubscribed");
        };
      }
    };
  }
};

var subscription = obj.comments.startMatch([], false).subscribe(function(result) {
  console.log(result)
});
subscription.unsubscribe();

但是如果不出现unsubscribe undefined(取消订阅未定义)错误,我想不出如何执行此操作。

选择最简单的方法:

var obj = {};
obj.comments = {
  startMatch: function(matchStrings, isCaseSensitive) {
    return {
      subscribe: function(delegate) {
        delegate('test');
          return { unsubscribe: () => console.log("unsubscribed") }
      }
    };
  }
};

var subscription = obj.comments.startMatch([], false).subscribe(function(result) {
  console.log(result)
});

subscription.unsubscribe();

您可以返回unsubscribe函数或将unsubscribe回调作为第二个参数传递给subscribe函数。那么,您可能应该执行
return unsubscribe
from
subscribe
函数