详细讲解
我努力学习JavaScript的真正细节坚韧细节此彩盒代码,所以我将不胜感激,如果有人可以给我解释一下这段代码。在颜色框,笔者定义了他的公开方法,像这样:详细讲解
publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
// do stuff...
};
其他公共方法再定义,如:
publicMethod.remove = function() {
// do more stuff
};
在实践中,我知道,这些功能可以再被称为$ .colorbox()和$ .colorbox.remove(),但我通过实际的语法有点困惑。具体而言,当他分配发生了什么事 “$ .fn [颜色框]”和“$ [颜色框]”到publicMethod?
你对这个代码的注释?这是一个很好的设计模式吗?你会推荐其他模式吗?
在JavaScript中的每个对象是在同一时间的关联数组,对象属性也数组键。这意味着,obj.prop = 1
和obj["prop"] = 1
是完全一样的东西。而且,方法只是具有函数作为其值的属性。因此$["colorbox"] = function() {...}
创建一个匿名函数并将其指定为对象的属性colorbox
$
($
是JavaScript中的常规变量名称),则此函数将变为方法$.colorbox()
。请注意,我使用了字符串"colorbox"
,你的代码示例有它不但是引号 - 这将解释为一个变量名,所以变量colorbox
与价值"colorbox"
可能是那里使用。
函数是对象,以及这样你就可以对它们设置自定义属性。在这个例子中,属性remove
被设置在函数对象上,并成为它的方法。
是的,我可以在上面看到,他宣布 颜色框=“颜色框” – 2011-06-08 08:16:10
'OBJ。prop = 1'和'obj [“prop”] = 1'完全一样。完美的解释 – Lopsided 2015-01-06 21:44:58
根据Mozilla的JavaScript的指南中,方括号被用作属性访问,在这种情况下。见https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects
彩盒笔者在这里,我想说的话弗拉基米尔是完全正确的。我使用括号表示法,以便在通过缩小器时可以缩短变量(colorbox),因为在源中重复使用了相同的字符串。
在JavaScript中,对象(在这种情况下,函数表达式)围绕通过引用传递。
所以$ .colorbox,$ .fn.colorbox和publicMethod都指向同一个对象。当一个新的属性被添加到publicMethod(例如publicMethod.remove = function(){};)时,$ .fn.colorbox也会接收该属性,因为它们都引用同一个对象。
$ .fn.pluginName是jQuery插件的约定,$ .colorbox只是一个别名。 publicMethod是插件中使用的$ .fn.colorbox的缩写,当脚本通过缩减器时会缩短。
第一块代码是不是将匿名函数多次赋值给publicMethod,$ .fn [colorbox]和$ [colorbox]? – 2011-06-08 07:36:24
是的,对不起,你是对的。但是,将该匿名函数分配给$ .fn [colorbox]和$ [colorbox]时会发生什么。我想我不明白括号符号。 – 2011-06-08 07:40:09