javascript代码解释
Posted
技术标签:
【中文标题】javascript代码解释【英文标题】:javascript code explanation 【发布时间】:2011-09-25 14:47:33 【问题描述】:谁能解释一下这段代码的作用?
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
【问题讨论】:
【参考方案1】:很简单,如果 show 为真,它将调用dojo.removeClass(this.listNode, "tweetviewHidden");
,如果为假,它将调用dojo.addClass(this.listNode, "tweetviewHidden");
。
本质上它是一个切换功能。
[ ] 括号打开一个对象以通过键访问值。就像var bla="foo":"bar"; bla["foo"];
。现在,既然是道场,值就是一个函数,会被执行
【讨论】:
我不明白为什么这个答案被否决了。有人可能会争辩说,如果show
为真,那么它不是那么多,但如果show
是一个真值(即,不是 0、""、false、null、undefined 或 NaN)则更多,但这是一个小问题。
感谢您再次提高我的回答。 +1 为您提供有关真实价值观的信息!但是 false、""、null、undefined、0 和 NaN 当然是 false 而不是 true 值!猜你把它弄混了 :) 和 -10, 20, true, "foobar", 一个对象,一个数组,函数都是真值。
我以“不”一词开始我的列表,以暗示我的意思是除我列出的那些之外的任何值。我会争辩说我没有把它弄混,我的“不”只是错过了。 :)【参考方案2】:
稍微冗长一点,代码是这样的:
if (show) f = dojo["removeClass"];
else f = dojo["addClass"];
f(this.listNode, "tweetviewHidden");
我想dojo
充当了可以通过[]
按名称查找的函数的容器。
【讨论】:
通过括号语法查找属性不是 Dojo,这只是 JS。【参考方案3】:它使用[]
括号和?:
三元运算符来执行以下操作:
if(show)
dojo.removeClass(this.listNode, "tweetviewHidden");
else
dojo.addClass(this.listNode, "tweetviewHidden");
【讨论】:
【参考方案4】:它通过“show”变量“切换”类。即如果“show”为真,则将该类从节点中移除,否则将其添加到节点中。
考虑使用以下快捷方式:
dojo.toggleClass(this.listNode, "tweetviewHidden", !show);
【讨论】:
以上是关于javascript代码解释的主要内容,如果未能解决你的问题,请参考以下文章