13

我已经阅读了 Crockford 推动以更明显的原型方式使用 JavaScript(克隆对象以创建新对象,从不使用“new”关键字)。但在野外,我从未见过有人将这种风格用于大型项目。

我在哪里可以找到使用这种风格的大型项目的例子?

4

3 回答 3

5

必须提供一个反遮阳篷;)虽然也希望看到大型项目也使用它(如果有的话)。我喜欢 Object.create 我自己并且更喜欢它,尽管我从来没有能够在一个大项目中广泛使用它,也不觉得它应该如此。

  1. OO 开发者沉迷于“新”运算符,这是一个很难摆脱的习惯,而且一目了然。以经典方式编写的代码现在更容易移交给下一个开发人员,这已经是反对 Object.create 的有力论据。

  2. ES5(下一个 JS 版本)中的 Object.create 比 ES3(当前 JS 版本)中作为 shim 的 Object.create 功能强大得多,并且完全不同。出于这个原因,最好避免将 Object.create(现在可用)作为大型项目中广泛使用的策略,因为当 ES5 成为主流时,它的工作方式与现在可以实现的不同。

  3. 大型项目使用框架(当你没有流氓 JS '忍者',他们坚持从头开始编写所有东西,一遍又一遍地重新发明轮子),所有流行的框架都以经典方式促进原型继承。他们可能有一个 Object.create 方法,其形式为 .clone() 或其他形式,但它在有关对象继承和子类化的教程和文档中被掩盖了。

  4. ES3 中的 Object.create 无法使用私有属性。我摆弄 Object.create 的次数越多,我遇到的问题就越多,而男孩我摆弄它...

我用 Object.create 玩了很多,甚至围绕它编写了一个小框架,称为“Objection”(如果你感兴趣,你会发现它;)虽然避免链接到 github)和“JSoo”(已停产)。就大型项目的人力资源而言,它太滑稽、未完成和进步,无法成为主流和可维护的。我建议在作为支持者的同时反对它。

于 2010-08-11T23:14:02.927 回答
0

你可以在这里找到它诺基亚 WRT Plug-in for Visual Studio,一个诺基亚小部件开发者的插件。

来自诺基亚论坛:

The Nokia WRT Plug-in for Visual Studio provides features that enable 
the creation, editing, testing, and deployment of WRT widgets from within
Visual Studio.
于 2010-08-12T12:49:46.053 回答
-1

试试:http ://showroom.auction123.com/auction123/index.html

我们根本不使用 new ......我们只是设置一个函数的结果并将其用作一个类。

例如:

// CLASS DECLARATION
var ClassName = function() {

  var public;
  var private;

  var publicFunction = function() {
    // DO STUFF
  };

  // RETURN  OBJECT
  return {
     public: public,
     publicFunction: publicFunction
  };

};

最后的回报只是告诉我们将要公开什么。

通过执行以下操作实例化它:

var object = ClassName();
于 2010-08-09T00:43:22.583 回答