Javascript构造函数功能不同

时间:2017-04-07 04:07:23

标签: javascript

以下两个代码段之间的区别是什么?我知道第二个使用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();

2 个答案:

答案 0 :(得分:0)

在您的简单示例中,使用IIFE没有任何优势。这种结构的目的是,如果你有student以外的变量,你不想暴露给全局范围。

答案 1 :(得分:0)

第一个是您已声明的正常构造函数模式

使用IIFE的第二个是使用闭合装置。 它用于制作单独的模块,其中每个模块都具有具有某些属性的构造函数

在第二种模式中,您还可以将某些属性设为私有,而不希望将其暴露给模块外部的代码

供进一步参考:Emulating private properties with closures