使用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 中,因为您没有在模块范围内引入任何局部变量。

所以使用第二个片段,它更短两行,也更清晰。