您将如何使用这两种概念上不同的方法来编写javaScript对象

时间:2013-09-05 07:51:04

标签: javascript oop object conceptual

这是一个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 {}?

1 个答案:

答案 0 :(得分:4)

通过使用return这样,您可以实现revealing module design pattern,但是我在示例中看不到任何用例。 OOP真正基于您的需求。我鼓励您首先寻找您真正需要做的事情,然后寻找合适的设计模式以满足您的需求。

P.S。我假设你已经看过一些例子,但你真的没有理解它们,所以你认为它们是相同的。老实说,你的第二个例子对我没有任何意义,但我可能错了。

P.P.S。 PHP中的OOP与Javascript中的OOP有很大的不同。这可能是我猜你混淆的原因。