2016-02-23 68 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