JavaScript编码差异

标签 javascript oop class

有时我会这样创建类

function class1(){
.....
   class1.prototype.callme = function(){
      alert("hai");
   }
}
then I instantiate using (new class1()).callme();

有时我使用模块化模式

var class2 = (function(){
var privatemethod = function(){
....
}
var publicmethod = function(){
alert("am public");
}
return{
callme:publicmethod
}
})();

then I call class2.callme()

有什么好处和坏处,请大神解释一下。

最佳答案

第一个是构造函数,第二个是对象,所以它们不一样。您可能想在不同情况下使用其中一种。在任何情况下,您通常都在构造函数外部声明原型(prototype),并将 this.property 用于公共(public)方法和变量。第二个选项不能作为类重用,除非你使用像 jQuery 的 extend 或 Underscore 的 _extend 之类的东西,这是我通常做的方式,没有原型(prototype)似乎更简单链式臃肿代码。

关于JavaScript编码差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789078/

相关文章:

javascript - 处理 Ajax 请求的响应

javascript - 使用 "."而不是 ","正确排序 div 值?

python - 将当前对象传递给 python apscheduler 方法

actionscript-3 - 私有(private)函数被继承

C++ 在静态函数中使用非静态变量返回类实例

javascript - 消防站 : arrays vs sub collection of documents performance

java - 将多继承 C++ 代码移植到 Java

php - Laravel 与干预和命名空间的集成?

java - 当类是字节数组形式时确定类的父类(super class)?

javascript - 多次显示窗口警报 - Google Apps 脚本