jQuery fn中的“prototype”? + jquery函数内的普通javascript代码?

时间:2011-04-23 22:24:04

标签: javascript jquery prototype


我想知道jQuery中的原型意味着什么?我通常会找到关于“Prototype”的信息 - 框架 - 但是这里是jQuery里面的“原型”......?你能告诉我什么时候最好用吗?

另外,你能告诉我:为什么我们在jQuery插件中使用“普通javascript”代码而不是jquery代码,就像在这个例子中一样?这是一个快速问题吗?

这是我的例子:(推特插件)

感谢您的回答!

$.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);  
    });  
};  

2 个答案:

答案 0 :(得分:42)

  

我想知道“原型”在jQuery中意味着什么

名为Prototype的JavaScript库的名称来自JavaScript prototype。在JavaScript中,prototype是提供继承的机制(与类相反)。示例:String.prototype引用prototype的{​​{1}}对象,其中包含可以在任何String上调用的方法(其中包括)。

在你的问题的例子中,twitter插件在String上创建了一个名为String.prototype的新函数,它允许函数调用,例如:

makeLinks

其中text.makeLinks() 是一个字符串。

更多关于原型的阅读:


  

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

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

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

Quirksmode是一个流行的网站,用于记录这些不一致性(在CSS和JavaScript中)。


欢迎使用网站开发!

答案 1 :(得分:11)

Prototype是纯粹的javascript功能。

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

function myCustomObject(){
}

myCustomObject.prototype.myCustomAttr = "Hello";

var instance = new myCustomObject();

alert(instance.myCustomAttr); // alerts Hello