【问题标题】:javascript prototype constructor syntax 1 vs syntax 2 [duplicate]javascript原型构造函数语法1 vs语法2 [重复]
【发布时间】:2016-02-24 03:10:41
【问题描述】:

我已经看到了 javascript 原型的两种语法:第一个是来自教程 http://www.w3schools.com/js/js_object_prototypes.asp 第二个是由打字稿生成的 http://www.typescriptlang.org/Playground

第二种语法与第一种更简单的传统构造函数语法相比有什么优势?

https://jsfiddle.net/v6gxe7wc/1/

    function Person1(first, last) {
    this.firstName = first;
    this.lastName = last;
}

var Person2 = (function () {

  function Person2(first, last) {

    this.firstName = first;
    this.lastName = last;
  }

  return Person2;
})();

var person1 = new Person1("John", "Doe");
var person2 = new Person2("John", "Doe");

【问题讨论】:

  • 这不是同一个问题:另一个问题是关于文字对象,我这里没有文字语法。

标签: javascript


【解决方案1】:

JavaScript 区分大小写。如果你看这一行:

var person1 = new person1("John", "Doe");

...您有new person1,但没有名为person1 的标识符。但是,有一个Person1

var person1 = new Person1("John", "Doe");

顺便说一下,第二种语法并没有提供任何优势。 有利的地方是,如果您不想公开构造函数使用的其他变量:

var Person2 = (function () {

  var defaultFirstName = 'John';
  var defaultLastName = 'Doe';

  function Person2(first, last) {

    this.firstName = first || defaultFirstName;
    this.lastName = last || defaultLastName;
  }

  return Person2;
})();

在这种情况下,例如,defaultFirstNamedefaultLastName 对除了构造函数之外的所有内容都是隐藏的。

【讨论】:

  • 好的,谢谢。我会解决它,但我的主要问题仍未得到解答:)
猜你喜欢
  • 2020-12-14
  • 2016-07-08
  • 1970-01-01
  • 2015-12-01
  • 2014-07-05
  • 2019-04-14
  • 2013-08-20
  • 1970-01-01
  • 2012-12-05
相关资源
最近更新 更多