当前位置:  开发笔记 > 编程语言 > 正文

现有函数作为Array.forEach的回调函数

如何解决《现有函数作为Array.forEach的回调函数》经验,为你挑选了1个好方法。

这段代码的奇怪行为:

我有一些Angular控制器:

.controller('View1Ctrl', ['$scope', 'CrawlServerExecutor', function ($scope, CrawlServerExecutor) {

    $scope.results = [];

    var showResults = function (results) {
        results.forEach(function (result) {
            $scope.results.push(result);
        });
    };

写这样的时候:

    var showResults = function (results) {
        results.forEach($scope.results.push);
    };

我得到这个错误: Error: undefined is not an object为了尝试访问该push函数,我查看$scope.results了调试器内部并且该对象被识别为数组,但由于某种原因,在这种语法中它并没有引用它的push功能.而且我更喜欢这段代码,因为它更优雅.

任何人都知道为什么会这样?

谢谢



1> Alex Santos..:

您需要将数组绑定到函数,因此可以在正确的上下文中调用它(this正确设置).

results.forEach($scope.results.push.bind($scope.results));

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有