2012-02-08 87 views
0

我正在学习Mootools类,并且有些东西似乎无法让我头脑发现或找到一个体面的例子。Mootools类 - 在函数内调用函数

基本上,我需要能够在同一类的不同函数内调用函数;下面的例子:

var Bob = new Class({ 

    initialize: function() { 
     this.message = 'Hello'; 
    }, 

    someOther: function() { 
     this.message2 = 'Bob'; 
    }, 

    getMessage: function() { 
     return this.someOther(); 
    }, 

}); 

window.addEvent('domready', function() {  
    var map = new Bob; 

    alert(map.getMessage()); 
}); 

从这个代码,我还以为该警示会产生“鲍勃”已在功能“一些其它”被确定,但它的输出不确定的消息。

任何人都可以帮忙或指出我要出错的地方吗?

在此先感谢,

回答

4

呃不完全。

someOther本身没有返回值,它是一个setter。你调用它,它会将this.message2设置到类中,但它不返回任何内容。方法应该是return this(实例,所以使其可链接)或值,当一个getter。

反正,你可以把它设置的属性和像这样返回它:

var Bob = new Class({ 
    initialize: function() { 
     this.message = 'Hello'; 
    }, 
    someOther: function() { 
     return this.message2 = 'Bob'; //bad 
    }, 
    getMessage: function() { 
     return this.someOther(); // why 
    }, 
}); 
window.addEvent('domready', function() { 
    var map = new Bob; 
    alert(map.getMessage()); 
    alert(map.message2); // bob 
}); 

不过,语义,你想拥有1口吸气。 .getMessage应该只是return this.message - 您可以编写一个调用someOther并返回它的不同方法。

看看这种模式在一类背景下的getter/setter我写的一天: http://fragged.org/using-overloadsetter-overloadgetter-to-make-flexible-functions-in-mootools_1451.html

等等等等更多的帮助,看看keetology博客或davidwalsh.name - 或自由 - 大量的课堂使用和结构的例子。

最关键的部分在这里列出:https://stackoverflow.com/tags/mootools/info

+2

的getter/setter方法模式等,都很酷,但......难道我们确信用户应该进入呢?我的意思是,看看他所犯的错误:如果他从模式,灵活的getter/setter等开始,会发生什么混乱?让我们给他时间。基本上,问题是他错过了返回声明。期。 :) * PS:我真的很喜欢你的文章!* – 2012-02-09 08:36:18

+0

是的,我接受你的观点并同意。然而,可能还有其他人比OP更了解这一点,可能会从某些想法中受益,你永远不知道 - 你也喜欢它(谢谢),而且你不是___at__全新的mootools :)思想和模式是我津津乐道的东西,收集,你永远不知道如何或何时可以找到你以前见过的东西。 – 2012-02-09 09:16:14

+0

我们都从某个地方开始,而且通常都是一团糟。越多的人你可以指向正确的方向,你会得到越少的混乱;-) – Lennart 2012-02-09 14:09:45