【发布时间】:2012-10-24 22:20:27
【问题描述】:
让我们看两个示例,我将在其中尝试解释我想要理解的内容。
var Car = function(){
// Init class
function Car() { };
// Private func/vars
var private = { color:'red' };
// Public func/vars
Car.prototype = {
newColor: function(color) { private.color = color },
getColor: function() { return private.color }
};
return Car.prototype; // return with prototype
};
var myCar = new Car();
还有:
var Car = (function(){
// Init class
function Car() { };
// Private func/vars
var private = { color:'red' };
// Public func/vars
Car.prototype = {
newColor: function(color) { private.color = color },
getColor: function() { return private.color }
};
return Car; // avoid prototype adding parentheses on next line;
})();
var myCar = new Car();
让我们看看! 这两个类都是作为函数表达式创建的,并且都同样工作。 它们之间的唯一区别是: 第一个返回 Car 函数及其原型属性。 第二个工作返回 Car 函数,避免原型属性,而是使用 IIFE。
使用return Car.prototype; 和避免使用IIFE 和使用return Car; 使用IIFE(类声明末尾的括号)有什么区别。
【问题讨论】:
-
你到底想达到什么目的?
-
我正在尝试深入了解它的工作原理,以及技术差异。
-
您打算使用
new运算符并返回两个Car对象吗?
标签: javascript class prototype iife