AngularJS提供程序:使用唯一配置链接方法

AngularJS提供程序:使用唯一配置链接方法,angularjs,Angularjs,我有一个提供者,它有几个方法。我的简化代码: this.$get = function () { function $service () { var service = {}; function log (word) { service.config = word; return service; } function say () { conso

我有一个提供者,它有几个方法。我的简化代码:

this.$get = function () {
    function $service () {
        var service = {};

        function log (word) {
            service.config = word;
            return service;
        }

        function say () {
            console.log(service.config);
            return service;
        }

        service.config = new Config(); // just some prototyped configuration
        service.log = angular.bind(service, log);
        service.say = angular.bind(service, say);
        return service;
    }

    return $service;
};
因此,我们的想法类似于:

  var week = $service;
  var Monday = week.log('Today is Monday.');
  var Tuesday = Monday.log('Today is Tuesday.');
  var Friday = Tuesday.log('Today is Friday.');
这将导致:

Monday.say(); // 'Today is Monday.'
Tuesday.say(); // 'Today is Tuesday.'
Friday.say(); // 'Today is Friday.'
这样,每个变量都将保存其当前的配置,但只有在应用更改的方法时才会更改

现在,我明白了:

Monday.say(); // 'Today is Friday.'
Tuesday.say(); // 'Today is Friday.'
Friday.say(); // 'Today is Friday.'

因此每次都会覆盖配置。

我不确定您的代码是如何工作的,因为
.log
不会返回任何东西,所以
星期一
星期二
星期五
都是未定义的。您是否尝试过var tunday=week.log(“今天是星期二”);这只是一个简单的例子,不是我真正的代码。但是想法是有链式方法,但每个方法都有一个个人配置。因此,如果保存变量“first=week.log('first')”,然后使用保存的变量,但将其保存到不同的变量“second=first.log('second')”中,则每个“first”和“second”都会有不同的.say()返回。所以个人配置会被保存,但是因为它们是链接的,所以它们也有一个共享配置。但是您每次都在更新相同的
config
,这就是为什么每次链接一个方法时我都会问如何创建额外的个人配置。