Mootools类 - 在函数内调用函数

时间:2012-02-08 15:14:18

标签: class 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());
});

从这段代码中,我会认为警报会产生'Bob',它已在函数'someOther'中设置,但它正在输出未定义的消息。

任何人都可以帮助或指出我哪里出错了吗?

提前致谢,

1 个答案:

答案 0 :(得分:4)

不完全。

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

无论如何,您可以设置属性并将其返回:

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 blogs或davidwalsh.name - 或者mootorial - 大量的类使用和结构示例。

这里列出了大多数关键词:https://stackoverflow.com/tags/mootools/info