javascript - 声明和获取 js 对象的最佳方法是什么? (图案)

标签 javascript design-patterns

Javascript问题。
关于模式或表达式,可能是重复的问题。

您可以使用下面的三个来获取一个对象。 结果对象的工作原理相同。

当您使用大量 JavaScript Web 应用程序时,哪种模式是最好的?

按顺序,
1. 对象字面量大小写
2. 关闭案例
3.带有新案例的匿名函数

function car = {
  name: 'Q5',
  type:'SUV',
  wheels:4,
  door:2,
  score: 0,

  getWheel: function(){return this.wheels;},
  getDoor: function(){return this.door;}, 
  setScore: function(score){ this.score = score;}
}




var car = (function(){
  var name = 'Q5',
    type ='SUV',
    wheels = 4,
    door = 2,
    score = 0;

  return {
    getWheel: function(){return wheels},
    getDoor: function(){return door}, 
    setScore: function(_score){ score = _score;}
  }
})();



var car = new function(){
  var name = 'Q5',
    type ='SUV',
    wheels = 4,
    door = 2,
    score = 0;

  this.getWheel = function(){return wheels}
  this.getDoor = function(){return door} 
  this.setScore = function(_score){ score = _score;}    
}

最佳答案

没有“最好”的方法。 JavaScript 中有几种 OOP 模式,您提到的就是其中之一(也是一种流行的模式)。它本质上是一个原型(prototype)(或伪经典)模式,带有一个闭包来封装基于私有(private)类的静态变量。

还有其他模式(例如 Douglas Crockford 推荐的功能模式)。

我个人推荐伪经典模式(尽管哪种模式最好是争论的热点领域)。

如果您使用 JavaScript 进行 OOP,我强烈建议您考虑采用内置 OOP 的 JavaScript 库,例如 Dojo ToolkitClosure Library 。其他库(例如 jQuery、MOOtools、Ext 等)都有 OOP 模块和/或插件。

或者

虽然 JavaScript 中没有类,但有构造函数和原型(prototype)。当您有多个相似的对象(例如用户列表中包含的用户)时,这些概念会派上用场。您的代码示例使用了这两个概念。使用像 myclass 这样的名称,很难说出您要建模的内容。以下是 User 构造函数及其原型(prototype)扩展的示例:

var User = function (name) {
    this.name = name;
};

User.prototype.sayHello = function () {
    return "Hello, my name is " + this.name;
};

关于javascript - 声明和获取 js 对象的最佳方法是什么? (图案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272945/

相关文章:

python - 创建一个有点像博格的类

javascript - 在 JS 应用程序中保护 API key

javascript - 如何将多个模板合并到一个html中下划线、文本

javascript - 具有奇怪条件的循环

php - 依赖注入(inject)容器处理 PHP 网站的哪些部分?

Java TCP 服务器-客户端设计方案

c++ - 适配器模式 : Why would we need to subclass the Adaptee?

ios - 确定必要变量类型的设计模式

javascript - 将 setTimeout 设置为变量有什么用以及是否需要clearTimeout

javascript - 如何将主 div 扩展到完整的浏览器窗口高度?