Javascript问题。
关于模式或表达,可能是重复的问题。
您可以使用以下三个来获取对象。 结果对象的作用相同。
使用繁重的javascript网络应用程序时哪种模式最好?
按顺序,
对象文字案件
2.封闭案件
3.新案件的匿名功能
function car = {
name: 'Q5',
type:'SUV',
wheels:4,
door:2,
score: 0,
getWheel: function(){return this.wheels;},
getDoor: function(){return this.door;},
setScore: function(score){ this.score = score;}
}
var car = (function(){
var name = 'Q5',
type ='SUV',
wheels = 4,
door = 2,
score = 0;
return {
getWheel: function(){return wheels},
getDoor: function(){return door},
setScore: function(_score){ score = _score;}
}
})();
var car = new function(){
var name = 'Q5',
type ='SUV',
wheels = 4,
door = 2,
score = 0;
this.getWheel = function(){return wheels}
this.getDoor = function(){return door}
this.setScore = function(_score){ score = _score;}
}
答案 0 :(得分:2)
没有“最好”的方式。 JavaScript中有一些OOP模式,你提到的那个是其中之一(也是一个流行的模式)。它本质上是一个原型(或伪经典)模式,带有一个闭包来封装基于私有类的静态变量。
还有其他模式(例如Douglas Crockford推荐的功能模式)。
我个人推荐伪经典模式(尽管哪种模式最好是辩论的热门领域)。
如果您正在使用JavaScript进行OOP,我强烈建议您考虑采用内置了OOP的JavaScript库,例如Dojo Toolkit或Closure Library 。其他库(例如jQuery,MOOtools,Ext等)都有OOP模块和/或插件。
或强>
虽然JavaScript中没有类,但有构造函数和原型。当您有几个相似的对象(例如,用户列表中包含的用户)时,这些概念会派上用场。您的代码示例使用了这两个概念。使用像myclass这样的名称,很难说出你想要建模的东西。以下是User构造函数的示例以及对其原型的扩展:
var User = function (name) {
this.name = name;
};
User.prototype.sayHello = function () {
return "Hello, my name is " + this.name;
};