Javascript AngularJS表达式输出对象字符串值

Javascript AngularJS表达式输出对象字符串值,javascript,angularjs,Javascript,Angularjs,假设我使用一个表示字符串值的类(更像一种结构),其副作用是每次访问它时它都会更改其值: function Foo() { var value = 'a'; this.getValue = function() { if (value == 'a') { value = 'b'; return 'a'; } else { value = 'a';

假设我使用一个表示字符串值的类(更像一种结构),其副作用是每次访问它时它都会更改其值:

function Foo() {

    var value = 'a';

    this.getValue = function() {

        if (value == 'a') {

            value = 'b';
            return 'a';

        }
        else {

            value = 'a';
            return 'b';

        }

    }

}
…我重写了它的
toString()
方法:

Foo.prototype.toString = function() {
    return this.getValue();
}
使用直接引用输出此值可以:

var foo = new Foo();

alert(foo); //a
document.getElementById('bar').innerHTML = foo; //b
但是,使用AngularJS表达式输出对象会导致显示
{}
,而不是
toString()
/
getValue()
值:

var foo = new Foo();
var app = angular.module('main', []);

app.controller('ctrl', function($scope) {

    $scope.val = foo;
    alert($scope.val); //a (has not been changed by previous line)

});
…然后:

<div ng-app="main" ng-controller="ctrl">{{val}}</div> //{} (rather than b)
{{val}}/{}(而不是b)
我可以使用
$scope.val=foo.getValue()
$scope.val=foo.toString()
甚至
$scope.val=foo+''
,并根据
ng bind
调用
toString()
方法,但为什么在Angular对表达式中的对象求值时不调用该方法呢