0

我的应用程序中有以下代码:

app.factory('User', ['railsResourceFactory', '$http', function (railsResourceFactory, $http) {
    var res = railsResourceFactory({url: '/users', name: 'user'});

    res.prototype.hello = function () {
        return "hello";

    };

    debugger;

    return res;
}]);

我正在使用angularjs-rails-resource gem。当我在 chrome 中点击调试器并在控制台中键入以下内容时:

res.hello()

我得到:

TypeError: Object function RailsResource(value) { angular.extend(this, value || {}); } has no method 'hello'

我不确定为什么会这样。我是一种新的 javascript,所以我可能根本不了解 Prototype。或者它可能是角度或导轨的问题。

谢谢

4

1 回答 1

0

原型属性仅适用于函数。要问自己的第一个基本问题是,是否

railsResourceFactory({url: '/users', name: 'user'});

返回一个函数/构造函数?不,不是的。它返回一个资源对象。如果您来自经典的 OOP 语言,那么可以说原型属性仅适用于类而不适用于对象。如果您仍然希望能够访问当前正在处理的对象的原型,则可以访问它通过调用

object.constructor.prototype

因此,您可以通过调用来实现您想要实现的目标

res.constructor.prototype.hello= function () {
        return "hello";

    }; 
于 2013-02-27T11:21:58.387 回答