javascript代码说明

时间:2011-06-30 01:00:58

标签: javascript dojo javascript-framework

有人可以向我解释这段代码的用途吗?

dojo[(show ? "remove" : "add") + "Class"](this.listNode, "tweetviewHidden");

以下是此函数值所属的函数:

// Provide the class
dojo.provide("tweetview._ViewMixin");
 
// Declare the class
dojo.declare("tweetview._ViewMixin", null, {
    // Returns this pane's list
    getListNode: function() {
        return this.getElements("tweetviewList",this.domNode)[0];
    },
    // Updates the list widget's state
    showListNode: function(show) {
        dojo[(show ? "remove" : "add") + "Class"](this.listNode, "tweetviewHidden");
    },
    // Pushes data into a template - primitive
    substitute: function(template,obj) {
        return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, function(match,key){
            return obj[key];
        });
    },
    // Get elements by CSS class name
    getElements: function(cssClass,rootNode) {
        return (rootNode || dojo.body()).getElementsByClassName(cssClass);
    }
});

来源:http://dojotoolkit.org/documentation/tutorials/1.6/mobile/tweetview/starting_tweetview

4 个答案:

答案 0 :(得分:2)

非常简单,如果show为true,则会调用dojo.removeClass(this.listNode, "tweetviewHidden");,如果为false,则会调用dojo.addClass(this.listNode, "tweetviewHidden");。 基本上它是一个切换功能。

[]括号打开一个对象以按键访问该值。就像var bla={"foo":"bar"}; bla["foo"];一样。现在,由于它的dojo,值是一个函数,将被执行

答案 1 :(得分:1)

稍微冗长一点,代码做了类似的事情:

if (show) { f = dojo["removeClass"]; }
else      { f = dojo["addClass"];    }

f(this.listNode, "tweetviewHidden");

我认为dojo充当可以通过[]按名称查找的功能的容器。

答案 2 :(得分:1)

它使用[]括号和?:三元运算符来执行以下操作:

if(show){
    dojo.removeClass(this.listNode, "tweetviewHidden");
}else{
    dojo.addClass(this.listNode, "tweetviewHidden");
}

答案 3 :(得分:0)

通过“show”变量“切换”类。也就是说,如果“show”是真实的,那么该类将从节点中删除,否则它将被添加到节点。

考虑使用以下快捷方式:

dojo.toggleClass(this.listNode, "tweetviewHidden", !show);