AngularJS模型,使用angular.extend(object.prototype,...)vs angular.extend(object,...)

时间:2014-10-23 08:22:43

标签: javascript angularjs

我正在研究AngulaJS中的模型服务。我使用工厂nad我想使用angular.extend()的东西向$resource对象添加属性/属性。

问题是我无法访问添加的属性:

var myObject = $resource(...);

angular.extend(myObject.prototype, {
    hi : "hi",
    findFriend : function(){ console.log("You are all alone...") }
}

我无法在控制器中访问“hi”或“findFriend”,也无法使用console.log()访问工厂。

但如果我这样做:

var myObject = $resource(...);

angular.extend(myObject, {
    hi : "hi",
    findFriend : function(){console.log("It works"}
}

然后我就可以访问这些属性了。如果良好做法是第二个,那么有什么区别:

var myObject = $resource(...);
myObject.hi = "hi";
myObject.findFriend("It works");

我阅读了文档并遵循了this article to build my model

有人可以解释为什么一个工作而不是另一个工作?为什么它似乎与文章不同?

谢谢:)

1 个答案:

答案 0 :(得分:1)

这是因为你的var myObject不是类的实例,所以扩展原型会为实例添加方法而不是类。 $ resource返回" class"对象,因此您需要使用new myObject()实现myObject的实例。