【问题标题】:What is the best way to write Java Script Class [duplicate]编写Javascript类的最佳方法是什么[重复]
【发布时间】:2013-06-03 11:20:15
【问题描述】:

能否从以下两种类型的 javascript 类创建(OOP 概念)中帮助哪一种是最佳用法/实现?

方式一:

var MyClassName = function(){
  // private variables
  // private functions

  return {
    // public functions
    pubFunctionName1: function(){
    },
    pubFunctionName2: function(){
    }
  }
}

用法:

myClass = new MyClass();
myClass.pubFunctionName1();

方式2:

function MyClass(){
  //public variables and functions
  this.publicVariable = "";
  this.publicFunctionName3 = function(){
  }

  // private functions
  function privateFunctionName3(){
  }
}

用法:

var myClass = new MyClass();
myClass.publicFunctionName3();

【问题讨论】:

  • 从来没有一种最好的方式来做任何事情。仅适用于非常具体的情况。
  • 在这种情况下,没有一种最好的方法。这将取决于用例以及您更喜欢什么,因为它们都会给出相同的结果。但是我发现方式 2 对我来说更舒服,它更具可读性。但这也取决于用例
  • Javascript 中没有“类”这样的东西。只有对象。
  • Pholip 和 Ankit - 感谢您的重播。我将使用方式2。因为它对我来说很容易理解编码结构。

标签: javascript jquery class oop


【解决方案1】:

这通常取决于您自己的品味以及您希望如何使用该课程...但几个月前我问了自己一个类似的问题并找到了一个有用的 description where different ways of defining classes in Javascript are explained 。这也可能有助于向您澄清事情......

【讨论】:

  • 虽然这是一篇不错的文章,但您应该将其部分包含在您的答案中。否则,如果链接变得不可用出于某种原因,这个答案将毫无用处。
【解决方案2】:

查看此book

它有专门的构造函数章节,非常有用。

如果简而言之:在您提出的两种方法中,您将失去与prototype 的联系,因此您需要确定是否有必要。

另一个建议可能是这样的:

/* self-inited constructor */
var Cat = function () {
  if (!(this instanceof Cat)) {
    return new Cat();
  }

  this.name = 'Tom';
};
Cat.prototype.meow = true;

var persian = new Cat();
var cheshire = Cat();

console.log(persian.name); // "Tom"
console.log(cheshire.name); // "Tom"
console.log(persian.meow); // true
console.log(cheshire.meow); // true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2012-10-22
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2010-09-16
    相关资源
    最近更新 更多