我已经看到了 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;
})();
例如,在本例中,defaultFirstName
和 defaultLastName
对除构造函数之外的所有内容都隐藏。
关于javascript 原型(prototype)构造函数语法 1 与语法 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586029/