Nic*_*ark 12 javascript jquery
Twitter Bootstrap的所有jQuery插件都遵循定义控制插件行为的类的相同基本模式.接近结束时,他们这样做:
$.fn.alert.Constructor = Alert
Run Code Online (Sandbox Code Playgroud)
这是做什么的?
我假设这是定义一个原型构造函数,但它们使用大写C.这种情况不重要吗?除此之外,我真的不明白这是做什么以及它如何被插件使用.
举个例子,这是Alert插件:https: //github.com/twitter/bootstrap/blob/master/js/bootstrap-alert.js
Ale*_*yne 24
这里没有魔法,Constructor(大C)作为一个属性没有特殊意义.这只是惯例.
基本上他们使用类似结构来定义功能
var Alert = function() {};
Alert.prototype.foo = function() {};
Run Code Online (Sandbox Code Playgroud)
并通过非类似的接口公开它.
$('#blurf').alert();
Run Code Online (Sandbox Code Playgroud)
所以这只是一个有用的插件约定.每个jQuery插件都在$.fn对象上定义自己的主要方法,该方法可以通过闭包访问它所需的构造函数.但构造函数本身对该闭包是私有的.将其分配为$.fn.myplugin.Constructor简单地使该构造函数可以被其他代码访问,允许您在必要时进行高级控制
var myAlert = new $.fn.alert.Constructor('Hello World'); // or something
Run Code Online (Sandbox Code Playgroud)
现在你可以改为:
$.fn.alert.Alert = Alert;
Run Code Online (Sandbox Code Playgroud)
这是主观的,丑陋和多余的.现在你必须翻译或猜测导致构造函数的属性名称.如果你说每个插件是用一个类实现的,并且每个类构造函数都可以找到,$.fn.myplugin.Constructor那么你就有了一个一致的接口来访问每个插件背后的类.
所以,这仅仅是惯例,没有什么特别之处.
| 归档时间: |
|
| 查看次数: |
2406 次 |
| 最近记录: |