0

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

方式1:

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();
4

2 回答 2

1

这通常取决于您自己的品味以及您想如何使用该类......但几个月前我问了自己一个类似的问题,并找到了一个有用的描述,其中解释了在 Javascript 中定义类的不同方法。这也可能有助于向您澄清事情......

于 2013-06-07T08:15:09.587 回答
1

看看这本书

它有关于构造函数的特定章节,非常有用。

简而言之:在您提出的两种方法中,您都将失去与 的联系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
于 2013-06-07T08:20:23.310 回答