Javascript Twitter引导JS中$.fn.foo.Constructor=foo的用途是什么
所有用于Twitter引导的jQuery插件都遵循相同的基本模式,即定义一个控制插件行为的类。接近尾声时,他们会这样做:Javascript Twitter引导JS中$.fn.foo.Constructor=foo的用途是什么,javascript,jquery,Javascript,Jquery,所有用于Twitter引导的jQuery插件都遵循相同的基本模式,即定义一个控制插件行为的类。接近尾声时,他们会这样做: $.fn.alert.Constructor = Alert 这是干什么的 我假设这是定义一个原型构造函数,但它们使用大写的C。这里大小写不重要吗?除此之外,我真的不明白这个插件在做什么,以及它是如何被插件使用的 例如,以下是警报插件: 这里没有魔法,构造函数(大C)作为属性没有特殊意义。这只是惯例 基本上,他们使用类结构来定义功能 var Alert = function
$.fn.alert.Constructor = Alert
这是干什么的
我假设这是定义一个原型构造函数,但它们使用大写的C。这里大小写不重要吗?除此之外,我真的不明白这个插件在做什么,以及它是如何被插件使用的
例如,以下是警报插件:
这里没有魔法,
构造函数(大C)作为属性没有特殊意义。这只是惯例
基本上,他们使用类结构来定义功能
var Alert = function() {};
Alert.prototype.foo = function() {};
并通过一个非类接口公开它
$('#blurf').alert();
因此,这只是一个有用的插件约定。每个jQuery插件在$.fn
对象上定义自己的主要方法,该对象可以通过闭包访问它所需的构造函数。但是构造函数本身对闭包是私有的。将其分配给$.fn.myplugin.Constructor
只会使其他代码可以访问该构造函数,从而允许您在必要时进行高级控制
var myAlert = new $.fn.alert.Constructor('Hello World'); // or something
现在你可以这样做:
$.fn.alert.Alert = Alert;
这在主观上是丑陋和多余的。现在,您必须翻译或猜测导致构造函数的属性名。如果您说每个插件都是用一个类实现的,并且每个类构造函数都可以在$.fn.myplugin.constructor
中找到,那么您就有了一个一致的接口来访问每个插件后面的类
所以再说一遍,这只是惯例,没有什么特别之处