什么'声明和获取js对象的最佳方式是什么?(模式)

what's the best way to declare and get js object? (pattern)

本文关键字:是什么 方式 最佳 模式 对象 声明 js 获取 什么      更新时间:2023-09-26

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

你可以使用下面的三个来获得一个对象。result对象的工作原理相同。

当您使用繁重的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模式,您提到的就是其中之一(也是一个流行的模式)。它本质上是一个原型(或伪经典)模式,带有一个闭包来封装基于私有类的静态变量。

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

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

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

虽然JavaScript中没有类,但有构造函数和原型。当您有几个相似的对象(例如用户列表中包含的用户)时,这些概念就派上了用场。您的代码示例同时使用了这两个概念。使用像myclass这样的名称,很难判断您试图建模的是什么。下面是一个用户构造函数的例子,以及对其原型的扩展:

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