这是一个noob问题,但是来自服务器端(PHP)背景,我在创建javaScript对象和类的不同方法之间的概念差异上有点挣扎。
我有两个代码段,代表相同的代码,但以不同的方式实现。
我想知道你何时以及为何选择其中一个?
var foo = {
init: function() {
console.log('loading...');
console.log(this.param);
return this;
},
param: '5',
bar: function(){
console.log('bar bar');
this.black();
this.sheep();
return this;
},
black: function(){
console.log('black');
return this;
},
sheep: function(){
console.log('sheep');
console.log(this.param);
return this;
}
};
foo.init().bar();
然后是选项二:
var foo = function(){
return {
init: function() {
console.log('loading...');
console.log(this.param);
return this;
},
param: '5',
bar: function(){
console.log('bar bar');
this.black();
this.sheep();
return this;
},
black: function(){
console.log('black');
return this;
},
sheep: function(){
console.log('sheep');
console.log(this.param);
return this;
}
};
}
foo().init().bar();
为什么要在第二个例子中使用return {}?
答案 0 :(得分:4)
通过使用return
这样,您可以实现revealing module design pattern,但是我在示例中看不到任何用例。 OOP
真正基于您的需求。我鼓励您首先寻找您真正需要做的事情,然后寻找合适的设计模式以满足您的需求。
P.S。我假设你已经看过一些例子,但你真的没有理解它们,所以你认为它们是相同的。老实说,你的第二个例子对我没有任何意义,但我可能错了。
P.P.S。 PHP中的OOP与Javascript中的OOP有很大的不同。这可能是我猜你混淆的原因。