2016-02-23 66 views
0

我见过2语法JavaScript的原型:首先是从教程http://www.w3schools.com/js/js_object_prototypes.asp二是打字稿http://www.typescriptlang.org/PlaygroundJavaScript的原型构造函数的语法1对语法2

什么都结束了第一简单第二语法的优势和传统的构造函数的语法生成的?

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"); 
+0

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

回答

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从一切,但构造隐藏。

+0

好的谢谢。我会解决它,但我的主要问题仍然没有答案:) – user310291