javascript原型构造函数语法1 vs语法2

时间:2016-02-23 19:06:31

标签: javascript

我已经看到了javascript原型的2种语法:第一种来自教程http://www.w3schools.com/js/js_object_prototypes.asp第二种是由typescript 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");

1 个答案:

答案 0 :(得分:2)

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对构造函数之外的所有内容都是隐藏的。