另外,你能告诉我:为什么我们在jQuery插件中使用一个“简单的JavaScript”代码,而不是jQuery代码,就像在这个例子中一样?这是一个快速的问题吗?
这是我的例子:(twitter的插件)
谢谢你的答案!
$.each(data,function(i,item) { holder.append("<p>"+item.text.makeLinks()+"</p>"); }); //...further in the code String.prototype.makeLinks = function() { return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/,function(str) { return str.link(str); }); };
解决方法
I was wondering what “prototype” means in jQuery
名为Prototype的JavaScript库名称为JavaScript prototype.在JavaScript中,prototype是提供继承的机制(而不是类,而不是类).示例:String.prototype是指Strings的原型对象,它包含可以在任何String上调用的(其中包含)方法.
在您的问题的示例中,twitter插件在String.prototype上创建一个名为makeLinks的新函数,该函数允许函数调用,例如:
text.makeLinks()
其中text是一个字符串.
更多阅读原型:
> How does JavaScript .prototype work?
> @L_403_3@
> Understanding prototype method calls
> Understanding JavaScript prototypes
Why do we use a “plain javascript” code inside a jQuery plugin,instead of the jQuery code?
jQuery不是JavaScript的替代品.它是一个JavaScript库,旨在使JavaScript更容易编写,否则它将使用DOM API.你在jQuery插件中看到“vanilla”JavaScript,因为没有更好的方式来做JS.
jQuery是JavaScript.它通过提供更简单的API来简化编写其他JavaScript,在浏览器中保持一致. DOM不是这样,因为各种浏览器供应商已经创建了大多数相同但不完全相同的DOM API.
Quirksmode是用于记录这些不一致的网站(在CSS中以及JavaScript中).
欢迎来到网页开发!