javascript 原型(prototype)构造函数语法 1 与语法 2

标签 javascript

我已经看到了 javascript 原型(prototype)的 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");

最佳答案

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

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

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

关于javascript 原型(prototype)构造函数语法 1 与语法 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586029/

相关文章:

javascript - 为什么 IE7 javascript array.indexOf 不工作?

javascript - 在单选按钮选择上显示元素

javascript - 对象不支持属性或方法 'setItem'

javascript - 具有 6 个键的对象数组,如何将它们分组为更少的键?

javascript - 在 ruby​​ 中生成 javascript 代码的最佳方法 (RoR)

javascript - CasperJS:亚马逊无限验证码登录

c# - 从 javaScript 执行服务器端代码

javascript - 输入元素错误时访问选择方向

javascript - 我的 GAS 脚本无法创建没有任何错误的事件

javascript - Node.js:记录忽略的错误