Javascript Prototype没有添加方法

时间:2013-02-27 11:09:22

标签: javascript ruby-on-rails-3 google-chrome angularjs prototype

我的应用中有以下代码:

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的一些东西。或者它可能是角度或轨道的问题。

由于

1 个答案:

答案 0 :(得分:0)

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

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

返回一个函数/构造函数?不,不是的。它返回一个资源对象。如果你来自一个经典的OOP语言,我们只要说prototype属性只对类有用而在对象中不可用。如果你仍然希望能够访问你当前正在处理的对象的原型,你可以访问通过调用

object.constructor.prototype

所以你可以通过调用

来实现你想要实现的目标
res.constructor.prototype.hello= function () {
        return "hello";

    };