理解AngularJS $resource()返回什么(类或实例对象)
understanding what does AngularJS $resource() returns (class or instance object)
我是angular的新手,现在我正在研究"$resource"。但是这个问题与"$resource"没有直接关系,而是我想弄清楚如何在Angular中制造一个工厂来做一些类似于"类对象"answers"实例对象"的概念。
我的意思是,如果我像这样声明一个工厂,怎么可能呢?
angular.module('myApp.services').factory('Entry', function($resource) {
return $resource('/api/entries/');
});
如果我使用从工厂返回的对象,我得到一个"类对象",我可以执行方法,如
angular.module('myApp.controllers').controller('ResourceController',function(Entry) {
var entries = Entry.query(function() {
console.log(entries);
});
});
但是(这是我不能理解的),如果我使用"new",我得到一个"实例对象",然后我可以使用新的方法,如"$save(), $delete()或$remove()"。
这怎么可能?函数"$resource('/api/entries/');"返回,因此可以将其用作对象和构造函数(带有"new")来获取实例?
谢谢!
在javascript中函数可以作为对象构造函数(没有"class"关键字")。
$ resource ("whatever")类的行为不像对象:"query"方法是一个类方法,而$save是一个实例方法。
////////////////
// Example "class" definition
////////////////
// Define constructor
var Logger = function(prefix) {
this.prefix = prefix;
};
// Define instance method
Logger.prototype.log = function(text) {
console.log(this.prefix, text);
};
// Define class method ("static" method)
Logger.log = function(prefix, log) {
console.log(prefix, log);
}
////////////////
// Example usage
////////////////
var myInstance = new Logger("Hello"); // create instance
myInstance.log('World'); // call instance method
=> Hello World
Logger.log("Hello", "World"); // call class method
=> Hello World
但是一旦你定义了一个类,你就可以定义一个函数来定义类。
$ resource函数,只是一个返回构造函数的函数。
var LoggerMeta = function(prefix1) {
var Logger = function(prefix2) {
this.prefix = prefix1 + prefix2;
};
Logger.prototype.log = ...; // same a before
Logger.log = ...; // same as before
return Logger;
};
// call function that returns a constructor function
var Logger = LoggerMeta("Hello");
// create instance
var myLogger = new Logger(" World");
// call instance method
myLogger.log("again")
=> Hello World again
相关文章:
- 使用jQuery获取Dropzone实例/对象
- 在requirejs中共享实例化对象
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- JavaScript:如果现有对象被实例化为具有特定值,如何创建警报
- 用javascript创建另一个对象的实例
- Backbone relational无法实例化两个RelationalModel对象
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- 为什么属性存在于对象实例上,即使其原型发生了更改
- 如何在angularJS中获得对指令对象实例的引用
- 无法将值从实例对象传输到父类的实例数组中
- Javascript 原型 - 不仅适用于实例对象
- 如何在 angular 的控制器中使用用户定义的类实例/对象
- 三.js不是三的实例.对象3D
- 实例对象的私有状态的以下实现存在缺陷
- ES6 setter -保持对象干净//映射实例对象上的参数
- 直接从空格键访问模板实例对象属性
- 理解AngularJS $resource()返回什么(类或实例对象)
- 在Chrome原生消息传递:有多长是本地应用实例对象的生命周期
- 集合/实例对象样式为没有proto的vie javascript