如何在 AngularJS 中共享原型函数?

How to share prototype functions in AngularJS?

我有两个函数想在多个 AngularJS 控制器之间共享,但我不确定如何为原型函数执行此操作。

以前,函数是在控制器中定义的:

Array.prototype.contains = function(needle) {

...

}

这允许使用 contains 方法链接任何数组。但是,这在放置在工厂中时不起作用,因为 contains 对于服务外的任何数组都是未定义的。

(function() {

'use strict';

angular
    .module('app')
    .factory('FunctionsFactory', FunctionsFactory);

function FunctionsFactory() {

    return {
        contains: contains,
        exactlyContains: exactlyContains
    };
    ...

在多个 AngularJS 控制器之间共享这些类型的功能的最佳方式是什么?

拥有这种全球通用功能的最佳地点是运行 Blocks。它们是 Angular 中最接近 Main 方法的东西。

    angular.module('myApp',  [])
    .run(function(){
        Array.prototype.contains = function(){
             console.log('array contains');
        };    
    });

运行 块在注入器创建后执行并用于启动应用程序。