javascript - javascript 中的构造函数和原型(prototype)

标签 javascript angularjs

我正在阅读一段定义构造函数的代码

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);
}

http://jsfiddle.net/HPg6A/

最佳答案

您可以在 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/

相关文章:

javascript - 为什么 .call 和 .apply 比 JavaScript 中的直接函数调用慢?

javascript - 输入数字过滤器

Angularjs TypeError : UserService. getCurrentUser.then 不是 m.$scope.getCurrentUserId 处的函数

android - 我想使用 angularjs 和 cordova 将数据发布到 http ://hmkcode. appspot.com/jsonservlet

javascript - 通过点击 "Enter"从 textarea 提交数据

javascript - WooCommerce 图像缩放

javascript - 如何在 Java 中使用 GraalVM?找不到类异常

javascript - 如何在 Angular 指令的链接函数中引用一个值?

angularjs - AngularJS 中 $state.includes 的用途是什么?

javascript - Image source late binding - 摆脱同时显示的冗余错误图标