我已经看到了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");
答案 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;
})();
在这种情况下,例如,defaultFirstName
和defaultLastName
对构造函数之外的所有内容都是隐藏的。