我正在阅读一段定义构造函数的代码
var Resource = function(data) {
angular.extend(this, data);
}
然后为它定义一个方法。
Resource.query = function(url) {
console.log(url);
}
请问这是怎么操作的?我知道函数也是对象,这是否等同于以下内容?但如果是这样,那么构造函数会发生什么?
var data = {};
data.query = function(url) {
console.log(url);
}
另外,为什么我们不直接在原型(prototype)上定义它呢?
Resource.prototype.query = function(url) {
console.log(url);
}
最佳答案
您可以在 prototype
上定义方法,只有当它们要在特定实例上调用时。当方法直接定义为构造函数成员时,通常是模仿static方法。
基本上,当一个方法与一个类密切相关,但作为实例方法没有多大意义时,它可以作为静态方法实现。
我认为您会同意我的看法,即第二个示例更有意义,如果您同意,您已经理解了其中的区别。
1-
var user = new User();
user.findUser('somequery').then(...);
2-
User.findUser('somequery').then(...);
关于javascript - javascript 中的构造函数和原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22278134/