2011-04-23 70 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