使用iffe vs构造函数在js中创建对象
creating objects in js by using iffe vs constructor
有什么区别
var Student = (function () {
function Student(firstname, middleinitial, lastname) {
this.firstname = firstname;
this.middleinitial = middleinitial;
this.lastname = lastname;
this.fullname = firstname + " " + middleinitial + " " + lastname;
}
return Student;})();
对
function Student(firstname, middleinitial, lastname) {
this.firstname = firstname;
this.middleinitial = middleinitial;
this.lastname = lastname;
this.fullname = firstname + " " + middleinitial + " " + lastname;
}
创建新对象时使用哪个?
var temp=new Student("john","R","wayne");
由于您的 IIFE 除了创建 Student
函数之外什么都不做,因此它完全等同于
var Student = function Student(firstname, middleinitial, lastname) {
this.firstname = firstname;
this.middleinitial = middleinitial;
this.lastname = lastname;
this.fullname = firstname + " " + middleinitial + " " + lastname;
}
没有理由将它包装在 IIFE 中,因为您没有在模块范围内引入任何局部变量。
所以使用第二个片段,它更短两行,也更清晰。
有什么区别
var Student = (function () {
function Student(firstname, middleinitial, lastname) {
this.firstname = firstname;
this.middleinitial = middleinitial;
this.lastname = lastname;
this.fullname = firstname + " " + middleinitial + " " + lastname;
}
return Student;})();
对
function Student(firstname, middleinitial, lastname) {
this.firstname = firstname;
this.middleinitial = middleinitial;
this.lastname = lastname;
this.fullname = firstname + " " + middleinitial + " " + lastname;
}
创建新对象时使用哪个?
var temp=new Student("john","R","wayne");
由于您的 IIFE 除了创建 Student
函数之外什么都不做,因此它完全等同于
var Student = function Student(firstname, middleinitial, lastname) {
this.firstname = firstname;
this.middleinitial = middleinitial;
this.lastname = lastname;
this.fullname = firstname + " " + middleinitial + " " + lastname;
}
没有理由将它包装在 IIFE 中,因为您没有在模块范围内引入任何局部变量。
所以使用第二个片段,它更短两行,也更清晰。