2011-04-23 69 views
14


我想知道jQuery中的原型是什么意思?我通常找到关于“Prototype”的信息 - 框架 - 但这里是jQuery中的“原型”......?你能告诉我什么时候最好使用它吗?jQuery fn中的“prototype”? + jQuery中的普通的JavaScript代码函数?

另外,你能告诉我:为什么我们在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); 
    }); 
}; 

回答

42

我想知道什么是 “原型” 在jQuery的

命名为原型的JavaScript库的名字从JavaScript prototype手段。在JavaScript中,prototype是提供继承的机制(与类相对)。示例:String.prototype指的是Stringprototype对象,其中包含(除其他之外)可在任何String上调用的方法。

在你的问题的例子中,Twitter的插件创建于String.prototype一个新的功能,称为makeLinks,它允许函数调用,如:

text.makeLinks() 

其中text是一个字符串。在原型

更多阅读:


为什么我们在jQuery插件中使用“纯javascript”代码而不是jQuery代码?

jQuery不是JavaScript的替代品。它是一个JavaScript库,旨在使编写JavaScript 更容易,否则它将不得不使用DOM API。你会在jQuery插件中看到“vanilla”JavaScript,因为真的没有更好的方法来做JS的工作。

jQuery是JavaScript。它通过提供更简单的API在浏览器中保持一致,从而简化了其他JavaScript的编写。 DOM的情况并非如此,因为各种浏览器供应商已经创建了DOM API,其中主要是相同,但不完全相同。

Quirksmode是一个热门网站,用于记录这些不一致(在CSS和JavaScript中)。


欢迎来到网站开发!

+0

不错!非常感谢,现在有意义 – Paul 2011-04-23 23:02:26

+0

+1它也帮助了我,谢谢马特! :-) – fiberOptics 2013-05-20 03:15:49

11

Prototype是一种纯JavaScript功能。

它用于将属性或方法添加到已定义的对象(有点像扩展)。例如:

function myCustomObject(){ 
} 

myCustomObject.prototype.myCustomAttr = "Hello"; 

var instance = new myCustomObject(); 

alert(instance.myCustomAttr); // alerts Hello 
+0

http://jsfiddle.net/a2bEA/ – 2013-07-05 17:04:54