以下两个代码段之间的区别是什么?我知道第二个使用IIFE,但我无法理解一个人的好处是什么。你能解释一下吗?
//First*******
var student=function student(name) {
this.name = name;
}
student.prototype.printMessage = function () {
console.log(this.name);
};
var st = new student("test");
st.printMessage();
//Second**
var student = (function () {
function student(name) {
this.name = name;
}
student.prototype.printMessage = function () {
console.log(this.name);
};
return student;
}());
var st = new student("test");
st.printMessage();
答案 0 :(得分:0)
在您的简单示例中,使用IIFE没有任何优势。这种结构的目的是,如果你有student
以外的变量,你不想暴露给全局范围。
答案 1 :(得分:0)
第一个是您已声明的正常构造函数模式
使用IIFE的第二个是使用闭合装置。 它用于制作单独的模块,其中每个模块都具有具有某些属性的构造函数
在第二种模式中,您还可以将某些属性设为私有,而不希望将其暴露给模块外部的代码