亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
>原型的小助手
工作dom
“終於!”您在想:“他開(kāi)始了我們真正想知道的?!笔堑?,我把它留在了最後,以進(jìn)入原型的Ajax助手,因?yàn)樗鼈兘ㄔ谖覀円恢痹诮?jīng)歷的所有其他內(nèi)容之上,並且在談?wù)揂jax時(shí),它有助於理解原型的形式序列化,觀察者和插入。
總結(jié)
>
在此示例中,“顏色”屬性被添加到“ car”原型中。
>我可以將方法添加到無(wú)痛的JavaScript原型嗎?這與使用“原型”屬性相同的方式與添加屬性相同。以下是一個(gè)示例:
上是什麼效果? JavaScript原型是代碼可重複性和效率。通過(guò)創(chuàng)建原型,您可以創(chuàng)建具有相同屬性和方法的多個(gè)對(duì)象,而無(wú)需重新定義每個(gè)對(duì)象的這些屬性和方法。這可以節(jié)省大量時(shí)間並使您的代碼更有效。
>一個(gè)潛在的缺點(diǎn)來(lái)使用無(wú)痛的JavaScript原型,因?yàn)樗梢员绕渌鸍avaScript功能更複雜地理解和使用。但是,一旦您了解了它的工作原理,它就可以是一個(gè)非常強(qiáng)大的工具。
首頁(yè) web前端 js教程 使用原型無(wú)痛的JavaScript

使用原型無(wú)痛的JavaScript

Mar 07, 2025 am 12:03 AM

Painless JavaScript Using Prototype

如果您在軌道上,則無(wú)需下載原型:它包含在發(fā)行版中。您可以通過(guò)將其放入頁(yè)面的中來(lái)包括在您的視圖中:

>
<%= javascript_include_tag 'prototype' %>

現(xiàn)在,讓我們開(kāi)始!

>
>原型的小助手

使用原型的真正好處之一是它為非常常見(jiàn)的腳本任務(wù)提供的致命簡(jiǎn)單輔助功能。 $函數(shù)已經(jīng)引起了人們的關(guān)注。給它一個(gè)或多個(gè)元素ID,它將返回給它們的引用:

>
 <br>
// reference to the element with the ID 'nav' <br>
$("nav") <br>
// an array of element references <br>
$("img1", "img2", "img3")

>它就像一個(gè)湯具。 GetElementById,令人驚訝的是,當(dāng)您使用它時(shí)似乎更方便地編碼。

>另一個(gè)非常有用的功能是document.getElementsByClassName,它在錫上說(shuō)的是:它佔(zhàn)用CSS類(lèi)名稱(chēng),並返回該類(lèi)別的所有元素列表:

>
// all elements with class 'navlink' <br>
document.getElementsByClassName("navlink") <br>
// all elements with class navlink and inside the element with ID 'nav' <br>
document.getElementByClassName("navlink", $("nav"))

>另外,在編寫(xiě)本文時(shí),原型版本1.5.0_rc0獲得了功能強(qiáng)大的$$函數(shù),它允許您使用標(biāo)準(zhǔn)CSS選擇器語(yǔ)法選擇元素:>

// an array of all input elements inside 'commentform' <br>
$$("#commentform input") <br>
// an array of all links with the class 'external' <br>
$$("a.external")
>請(qǐng)注意,在撰寫(xiě)本文時(shí),除非您從顛覆中下載最新版本的原型,否則此功能將無(wú)法提供。

>

$F takes an ID and returns the value of any form field, for instance, a select box like this:

<select name="country" > <br>
 ?<option selected="selected" value="UK">United Kingdom</option> <br>
 ?<option value="FR">France</option> <br>
 ?... <br>
</select> <br>
 <br>
$F('country') // 'UK'
使JavaScript吸吮
糟糕,我已經(jīng)偷走了另一個(gè)JavaScript庫(kù)的標(biāo)籤行。 JavaScript庫(kù)開(kāi)發(fā)人員似乎無(wú)法嘗試使JavaScript像另一種語(yǔ)言一樣。 Mochikit的傢伙希望JavaScript成為Python,無(wú)數(shù)的程序員試圖製作JavaScript,例如Java,而原型試圖使其像Ruby一樣。原型可以擴(kuò)展到JavaScript的核心,該核心可以(如果選擇使用它們)對(duì)您的編碼JavaScript的方法產(chǎn)生巨大影響。根據(jù)您的背景和大腦的工作方式,這可能對(duì)您有所幫助。

oo ruby??(ish)方式:class.create and object.extend

class.greate方法允許您以更類(lèi)似紅寶石的方式定義類(lèi),儘管這純粹是美學(xué)的,因?yàn)樗举|(zhì)上只是稱(chēng)您將定義為構(gòu)造函數(shù)定義的初始化方法,而不是採(cǎi)用傳統(tǒng)的JavaScript方法來(lái)創(chuàng)建具有構(gòu)造函數(shù)的對(duì)象的傳統(tǒng)JavaScript方法。

但是,
var DOMTable = Class.create(); <br>
DOMTable.prototype = { <br>
 ?initialize : function(el) { <br>
 ? ?this.el = el; <br>
 ?}, <br>
 ?... <br>
}
更強(qiáng)大的是愚蠢但有效的對(duì)象。 extend方法。它所做的只是將一個(gè)對(duì)象的屬性和方法複製到另一個(gè)對(duì)象,但其用途很多。這是一個(gè)快速的品嚐者:

// make a (shallow) copy of obj1 <br>
var obj2 = Object.extend({}, obj1); <br>
 <br>
var options = { <br>
 ?method : "post", <br>
 ?args : "" <br>
}; <br>
 <br>
// merges in the given options object to the default options object <br>
Object.extend(options, { <br>
 ?args : "data=454", <br>
 ?onComplete : function() { alert("done!"); } <br>
}); <br>
 <br>
options.method // "post" <br>
options.args // "ata=454" <br>
options.onComplete // function() { alert("done!"); }
>最常用的用來(lái)與另一個(gè)對(duì)象“混合”方法。例如,您可以創(chuàng)建一組可使某些DOM元素可排序的函數(shù):>

然後,如果我們想從上面的可分配中使我們的滴滴使我們的滴滴混合在一起,則可以將這些方法混合到可滴的對(duì)象:>

<%= javascript_include_tag 'prototype' %>

現(xiàn)在,我們可以在表上調(diào)用這些方法:

 <br>
// reference to the element with the ID 'nav' <br>
$("nav") <br>
// an array of element references <br>
$("img1", "img2", "img3")

>函數(shù)綁定

>原型還為函數(shù)對(duì)象添加了兩個(gè)真正有用的方法:綁定和bindaseVentListener。這些主要用於將函數(shù)綁定到特定對(duì)象,以便該關(guān)鍵字指向該對(duì)象。當(dāng)您設(shè)置事件處理程序功能時(shí),這非常有用。想像一下您嘗試這樣的事情:

// all elements with class 'navlink' <br>
document.getElementsByClassName("navlink") <br>
// all elements with class navlink and inside the element with ID 'nav' <br>
document.getElementByClassName("navlink", $("nav"))
傳統(tǒng)上,您會(huì)遇到一個(gè)錯(cuò)誤,因?yàn)楫?dāng)事件觸發(fā)處理程序功能時(shí),這是指myDiv元素,而不是myObject,因此此Mess.message不確定。您可以使用類(lèi)似的綁定方法解決此問(wèn)題:

>

// an array of all input elements inside 'commentform' <br>
$$("#commentform input") <br>
// an array of all links with the class 'external' <br>
$$("a.external")
>現(xiàn)在一切都很好,因?yàn)榇岁P(guān)鍵字已綁定到myObject。除此之外,BindaseVentListener執(zhí)行了同樣的事情,儘管它以跨瀏覽器兼容的方式將事件對(duì)像傳遞到您的函數(shù),因此您不再需要擔(dān)心window。嘗試一下:

$F takes an ID and returns the value of any form field, for instance, a select box like this:

現(xiàn)在,我們的EventHandler函數(shù)可以訪(fǎng)問(wèn)事件對(duì)象。有關(guān)這兩種方法的更多詳細(xì)信息,可以在其創(chuàng)建者的網(wǎng)站上獲得。

>

新的字符串和數(shù)字方法>

>原型已向內(nèi)置的字符串對(duì)象添加了大量有用的方法。讓我們快速看一些最好的。

>

<select name="country" > <br>
 ?<option selected="selected" value="UK">United Kingdom</option> <br>
 ?<option value="FR">France</option> <br>
 ?... <br>
</select> <br>
 <br>
$F('country') // 'UK'
var DOMTable = Class.create(); <br>
DOMTable.prototype = { <br>
 ?initialize : function(el) { <br>
 ? ?this.el = el; <br>
 ?}, <br>
 ?... <br>
}
// make a (shallow) copy of obj1 <br>
var obj2 = Object.extend({}, obj1); <br>
 <br>
var options = { <br>
 ?method : "post", <br>
 ?args : "" <br>
}; <br>
 <br>
// merges in the given options object to the default options object <br>
Object.extend(options, { <br>
 ?args : "data=454", <br>
 ?onComplete : function() { alert("done!"); } <br>
}); <br>
 <br>
options.method // "post" <br>
options.args // "ata=454" <br>
options.onComplete // function() { alert("done!"); }
>原型也為數(shù)字添加了一個(gè)很好的方法。告別您的循環(huán)!

var Sortable = { <br>
 ?sortBy : function(func) { <br>
 ? ?... <br>
 ?}, <br>
 ?sortByReversed : function(func) { <br>
 ? ?... <br>
 ?}, <br>
 ?reset : function() { <br>
 ? ?... <br>
 ?} <br>
};
>在這裡,Times方法採(cǎi)用的函數(shù)將被稱(chēng)為給定的次數(shù),並將當(dāng)前迭代號(hào)作為參數(shù)傳遞。使用枚舉時(shí),這種迭代函數(shù)的使用很常見(jiàn),我們將在接下來(lái)討論。

>

迭代紅寶石方式: 原型的隱藏寶石之一是枚舉的混合物和哈希對(duì)象,這些物體直接從紅寶石中煮出來(lái)。如果您不熟悉Ruby,請(qǐng)不要擔(dān)心。我將在這裡解釋這一切。 我們將從枚舉開(kāi)始。簡(jiǎn)而言之,當(dāng)我們使用object.extend向?qū)ο筇砑用杜e時(shí),它為對(duì)象提供了許多真正有用的功能來(lái)使用其屬性。枚舉已添加到數(shù)組原型中,因此任何數(shù)組都具有這些新方法。以下是一些您可以使用新的“枚舉”數(shù)組來(lái)做的示例:

>

var myTable = new DOMTable("table-id"); <br>
Object.extend(myTable, Sortable);
// sort the table using the given function <br>
myTable.sortBy(function (itemA, itemB) { ... });
var myObject = new Object(); ?<br>
myObject.message = "Hello!"; ?<br>
myObject.eventHandler = function() { ?<br>
 ?alert(this.message); ?<br>
} ?<br>
 ?<br>
$("mydiv").onmouseover = myObject.eventHandler;
$("mydiv").onmouseover = myObject.eventHandler.bind(myObject);
myObject.eventHandler = function(event) { ?<br>
 ?alert(event.srcElement.nodeName); ?<br>
} ?<br>
 ?<br>
$("mydiv").onmouseover = myObject.eventHandler.bindAsEventListener(myObject);
為創(chuàng)建哈希,請(qǐng)?jiān)谌魏螌?duì)像上調(diào)用魔術(shù)函數(shù)$ h。這將對(duì)象的所有屬性變成了一組鍵值對(duì),並混合了枚舉。讓我們散發(fā)哈希:
// "backgroundColor" ?<br>
"background-color".camelize()
>:
camelize turns hyphenated strings to camel case strings that you can use to work with CSS properties.

<%= javascript_include_tag 'prototype' %>
 <br>
// reference to the element with the ID 'nav' <br>
$("nav") <br>
// an array of element references <br>
$("img1", "img2", "img3")
// all elements with class 'navlink' <br>
document.getElementsByClassName("navlink") <br>
// all elements with class navlink and inside the element with ID 'nav' <br>
document.getElementByClassName("navlink", $("nav"))

首先,如果您不是紅寶石主義者,枚舉和哈希似乎有些麻煩,但是我可以向您保證,一旦您開(kāi)始使用它們,您會(huì)想知道為什麼您會(huì)願(yuàn)意讓RSI寫(xiě)所有這些循環(huán)的RSI!當(dāng)您將其中一個(gè)或多個(gè)一起使用時(shí),您將意識(shí)到這些新方法的巨大力量。你可以 “>在Encyte Media中更詳細(xì)地閱讀有關(guān)枚舉和哈希的信息。

>

事件對(duì)像有助於提供許多人,這是JavaScript的聖杯:簡(jiǎn)單,跨瀏覽器事件處理:

// an array of all input elements inside 'commentform' <br>
$$("#commentform input") <br>
// an array of all links with the class 'external' <br>
$$("a.external")

>以一種相當(dāng)令人愉悅的方式,原型試圖通過(guò)在頁(yè)面卸載時(shí)自動(dòng)刪除每個(gè)觀察者來(lái)避免IE中的討厭記憶洩漏。

不過(guò),在我看來(lái),這是一個(gè)相當(dāng)不發(fā)達(dá)的事件處理解決方案,因此,可能值得考慮使用像Dean Edwards的Addevent一樣暫時(shí)使用的東西。

處理表單

表單和字段對(duì)象為使用表單和輸入字段的工作提供了許多簡(jiǎn)單但方便的功能,以及支持原型AJAX實(shí)現(xiàn)的代碼。
>

形式對(duì)象

>通常,表單對(duì)象的方法以ID或?qū)ο笠迷氐囊茫?ancy>>

字段對(duì)象

$F takes an ID and returns the value of any form field, for instance, a select box like this:

字段對(duì)象處理單個(gè)元素,其方法通常以與形式對(duì)象相似的方式對(duì)元素進(jìn)行ID或?qū)ο笠茫?em>>

形式序列化

<select name="country" > <br>
 ?<option selected="selected" value="UK">United Kingdom</option> <br>
 ?<option value="FR">France</option> <br>
 ?... <br>
</select> <br>
 <br>
$F('country') // 'UK'
在原型術(shù)語(yǔ)中,序列化表單意味著讀取所有表單的元素,並將它們變成與URL編碼的字符串(幾乎)相同的字符串(幾乎),如果您提交了表單,則會(huì)發(fā)送。例如,考慮以下形式:

請(qǐng)注意,表格巧妙地對(duì)訪(fǎng)問(wèn)不同形式元素的方式之間的差異巧妙地平滑,以便正確處理輸入,選擇,複選框和無(wú)線(xiàn)電按鈕。 form.Serialize對(duì)於多個(gè)任務(wù)很有用,但是當(dāng)我們與Ajax合作時(shí),我們會(huì)很快就會(huì)出現(xiàn)。

var DOMTable = Class.create(); <br>
DOMTable.prototype = { <br>
 ?initialize : function(el) { <br>
 ? ?this.el = el; <br>
 ?}, <br>
 ?... <br>
}

這些觀察者每秒檢查一下數(shù)據(jù)是否已更改,如果有的話(huà),將調(diào)用mycallbackfunction。

第二種類(lèi)型的觀察者是基於事件的,只有在為元素產(chǎn)生更改或點(diǎn)擊事件時(shí)才執(zhí)行檢查。您可以這樣使用:
// make a (shallow) copy of obj1 <br>
var obj2 = Object.extend({}, obj1); <br>
 <br>
var options = { <br>
 ?method : "post", <br>
 ?args : "" <br>
}; <br>
 <br>
// merges in the given options object to the default options object <br>
Object.extend(options, { <br>
 ?args : "data=454", <br>
 ?onComplete : function() { alert("done!"); } <br>
}); <br>
 <br>
options.method // "post" <br>
options.args // "ata=454" <br>
options.onComplete // function() { alert("done!"); }
var Sortable = { <br>
 ?sortBy : function(func) { <br>
 ? ?... <br>
 ?}, <br>
 ?sortByReversed : function(func) { <br>
 ? ?... <br>
 ?}, <br>
 ?reset : function() { <br>
 ? ?... <br>
 ?} <br>
};
var myTable = new DOMTable("table-id"); <br>
Object.extend(myTable, Sortable);
>如果您要觀察到支持事件處理程序的所有字段,這是一種更有效的觀察表格的方法。但是,如果您想注意不支持這些事件的元素的更改,請(qǐng)使用定期觀察者。
工作dom

>原型具有4個(gè)對(duì)象(元素,插入,觀察者和位置),可以在許多瀏覽器差異上進(jìn)行各種形式的DOM操縱和平滑,從而使dom so屏幕上耗時(shí)令人髮指。與其將計(jì)算機(jī)扔出窗口,不如瀏覽本節(jié)。

元素對(duì)象

元素對(duì)像以您可能期望的那樣起作用:大多數(shù)元素方法只是將ID或?qū)ο笠媚倏v的元素。這是一些最有用的方法:

>
<%= javascript_include_tag 'prototype' %>

請(qǐng)參閱Sergio Pereira網(wǎng)站上的完整列表。

插入對(duì)象

我知道您在想什麼:這聽(tīng)起來(lái)有些怪異,對(duì)嗎?好吧,插入對(duì)像在一個(gè)元素中和周?chē)砑恿薍TML塊。插入有4種類(lèi)型:前後,頂部和底部。這是您在帶有ID“ mylement”元素之前添加一些html的方法:

>

 <br>
// reference to the element with the ID 'nav' <br>
$("nav") <br>
// an array of element references <br>
$("img1", "img2", "img3")
此圖顯示了每種類(lèi)型的插入將在何處刪除與給定元素有關(guān)的HTML內(nèi)容。

使用原型無(wú)痛的JavaScript

位置對(duì)象

>位置對(duì)象提供多種方法,可以告訴您屏幕上給定的位置,並以跨瀏覽器兼容的方式提供有關(guān)該位置的信息。這應(yīng)該從編寫(xiě)動(dòng)畫(huà),效果和拖放代碼的編寫(xiě)動(dòng)畫(huà),效果和拖放代碼中汲取很多麻煩。查看職位參考以獲取更多詳細(xì)信息。

>

上獲取您的Web 2.0
“終於!”您在想:“他開(kāi)始了我們真正想知道的?!笔堑?,我把它留在了最後,以進(jìn)入原型的Ajax助手,因?yàn)樗鼈兘ㄔ谖覀円恢痹诮?jīng)歷的所有其他內(nèi)容之上,並且在談?wù)揂jax時(shí),它有助於理解原型的形式序列化,觀察者和插入。
ajax,如果您在過(guò)去幾年中被埋葬在一個(gè)非常深的孔中,則指的是使用瀏覽器的XMLHTTPRequest對(duì)象(或等效)與服務(wù)器進(jìn)行通信,而無(wú)需重新加載頁(yè)面。原型在大多數(shù)細(xì)節(jié)上都可以平滑,但是在Cameron Adams的本文中,您可以在本文中找到一些背景。

>所以,現(xiàn)在您都在抽一些Web 2.0操作,讓我們看一個(gè)非常簡(jiǎn)單的Ajax請(qǐng)求:

ajax.Request構(gòu)造函數(shù)採(cǎi)用URL和選項(xiàng)對(duì)象。在這種情況下,我們將一個(gè)參數(shù)(名稱(chēng))發(fā)送給Hello..php,並提醒其響應(yīng)(或在錯(cuò)誤時(shí)提醒錯(cuò)誤)。值得花時(shí)間熟悉可用的選擇;以下是選項(xiàng)的概述,以及它們的默認(rèn)值:>

使用原型無(wú)痛的JavaScript

>原型將自定義的HTTP標(biāo)頭添加到其所有AJAX請(qǐng)求中,以便您的服務(wù)器應(yīng)用程序可以檢測(cè)到它是AJAX調(diào)用,而不是正常調(diào)用。標(biāo)題是:

<%= javascript_include_tag 'prototype' %>

這是用於檢測(cè)AJAX調(diào)用的示例PHP函數(shù):>

 <br>
// reference to the element with the ID 'nav' <br>
$("nav") <br>
// an array of element references <br>
$("img1", "img2", "img3")
使用這種方法,您可以編寫(xiě)AJAX應(yīng)用程序,即使用戶(hù)使用舊瀏覽器或已禁用JavaScript,也可以使用JJAX應(yīng)用程序,但這是其他文章……>

>

使用form.serialize將數(shù)據(jù)傳遞到ajax.request

> 如上所述,參數(shù)選項(xiàng)用於傳遞URL編碼的變量字符串。如果您需要發(fā)送的數(shù)據(jù)是由表單設(shè)置的,就像大多數(shù)AJAX應(yīng)用程序一樣,您可以簡(jiǎn)單地使用表單。 Serialize從所有表單字段中生成URL編碼的字符串,並將其傳遞到類(lèi)似的參數(shù)選項(xiàng)中:

編寫(xiě)ajax事件處理程序
// all elements with class 'navlink' <br>
document.getElementsByClassName("navlink") <br>
// all elements with class navlink and inside the element with ID 'nav' <br>
document.getElementByClassName("navlink", $("nav"))

> 在上面的示例中,Onsuccess和OnFailure是AJAX事件處理程序的兩個(gè)示例。 ajax的選項(xiàng)對(duì)像中給出的事件處理程序函數(shù)給出了一個(gè)參數(shù),這是該ajax調(diào)用的xmlhttprequest對(duì)象。我通常稱(chēng)此論點(diǎn)響應(yīng)或resp。您可以使用此參數(shù)從服務(wù)器中獲取響應(yīng):>

但是,請(qǐng)記住,請(qǐng)記住,resp只是xmlhttprequest對(duì)象,因此所有這些屬性都可用。

>

>您可以通過(guò)將JSON數(shù)據(jù)添加到X-JSON響應(yīng)標(biāo)頭中從服務(wù)器中發(fā)送數(shù)據(jù)。然後,這將通過(guò)原型自動(dòng)評(píng)估,並作為第二個(gè)參數(shù)發(fā)送。 >
// an array of all input elements inside 'commentform' <br>
$$("#commentform input") <br>
// an array of all links with the class 'external' <br>
$$("a.external")

>許多AJAX操作只是涉及使用從服務(wù)器返回的HTML更新頁(yè)面上的一些HTML。 ajax.updater對(duì)象包裹ajax.request,並簡(jiǎn)化了這種常見(jiàn)用例。這是一個(gè)簡(jiǎn)單的例子:

>上面的摘要將簡(jiǎn)單地替換ID為“ myDiv”的元素的內(nèi)容,並用從服務(wù)器返回的任何內(nèi)容。 ajax.periodicalupdater是相似的,但是以您設(shè)置的間隔重複進(jìn)行Ajax調(diào)用:

衰減選項(xiàng)使您可以返回許多相同的響應(yīng),使您的服務(wù)器有點(diǎn)休息。本質(zhì)上,每次定期updater提出請(qǐng)求,都將結(jié)果與上次返回的服務(wù)器進(jìn)行比較。如果值相同,則將間隔乘以衰減值。因此,在上面的示例中,它將在兩秒鐘後,然後在四秒鐘之後等到下一個(gè)請(qǐng)求,依此類(lèi)推,直到收到服務(wù)器的不同結(jié)果為止。那時(shí),間隔將重置為一秒鐘。 帶有響應(yīng)者的

$F takes an ID and returns the value of any form field, for instance, a select box like this:

如果您正在尋找?guī)в性偷腁jax的一些工作示例,請(qǐng)嘗試本文。 >
<%= javascript_include_tag 'prototype' %>
下一個(gè)在哪裡?

正如我們?cè)诒疚闹锌吹降哪菢?,原型不僅本身是有用的,而且為編寫(xiě)其他更專(zhuān)業(yè)的庫(kù)提供了一個(gè)絕佳的起點(diǎn)。這正是越來(lái)越多的人在做的事情。

>
> script.aculo.us和moo.fx

>托馬斯·??怂梗═homas Fuchs)的腳本。 Aculo.us目前,它引起了人們對(duì)其Whiz-Bang效果和聰明的UI小部件的關(guān)注。它最初是核心原型庫(kù)的一部分,但很快就會(huì)失控並擺脫了父母。 使用原型作為基礎(chǔ),script.aculo.us專(zhuān)門(mén)通過(guò)動(dòng)畫(huà)效果,易於使用拖放功能和功能強(qiáng)大的UI組件來(lái)提供豐富的用戶(hù)體驗(yàn)。該網(wǎng)站上有一個(gè)不錯(cuò)的Wiki,並提供了快速增長(zhǎng)的質(zhì)量文檔來(lái)幫助您入門(mén),並示例頁(yè)面以使您的創(chuàng)意果汁流動(dòng)。由於script.aculo.us的文件大小越大,因此已分為幾個(gè)文件,因此您的用戶(hù)不必下載整個(gè)庫(kù),以便您可以使用一些幻燈片效果。但是,即使單個(gè)文件也很笨重。

如果您正在追求一些簡(jiǎn)單的效果,我真的會(huì)推薦moo.fx。它的尺寸只有3K,並為您提供一些切換的幻燈片和褪色效果,這些效果通常是簡(jiǎn)單的Ajax應(yīng)用程序中所需的一切。如果您想寫(xiě)自己的效果,這也是一個(gè)很好的起點(diǎn)。請(qǐng)查看代碼,以查看使用Prototype的對(duì)象進(jìn)行編程的一個(gè)很好的示例。 Valerio顯然非常專(zhuān)注於保持他的腳本文件大小的大小,因此他甚至具有“精簡(jiǎn)版”的原型版本(切成大約10k左右),並且是Ajax.Request的精益版本,我發(fā)現(xiàn)自己比完整的原型庫(kù)更經(jīng)常使用。絕對(duì)值得一看。

行為

行為是您的DOM腳本工具包的一個(gè)很好的補(bǔ)充,它允許您使用CSS選擇器將行為添加到文檔中。這是它允許您執(zhí)行的示例:> 在行為網(wǎng)站上,

>在行為網(wǎng)站上閱讀有關(guān)此信息的更多信息?,F(xiàn)在可以使用前面討論的全新$$函數(shù)來(lái)實(shí)現(xiàn)類(lèi)似類(lèi)型的事物,因此最終可能會(huì)變得多餘。

jquery
 <br>
// reference to the element with the ID 'nav' <br>
$("nav") <br>
// an array of element references <br>
$("img1", "img2", "img3")

> jQuery是一個(gè)緊湊的小庫(kù),可在原型中效果很好,並創(chuàng)建了可以吸收XPath和CSS 3選擇器的$函數(shù)的超級(jí)英雄版本。它將能力與某種極其聰明的方法鏈方法結(jié)合在一起,從而製造了非常簡(jiǎn)潔的代碼。當(dāng)心這個(gè)。

總結(jié)
在將某些DOM腳本香料添加到您的Web應(yīng)用程序中時(shí),

>原型是強(qiáng)大的套件。不幸的是,它的功能和工具的增長(zhǎng)速度比文檔快得多!我們?cè)O(shè)法涵蓋了本文原型的每個(gè)角落,但不是每種方法。不過(guò),我希望您現(xiàn)在知道要去哪裡獲取所需的額外信息。

如果您想了解更多,請(qǐng)嘗試Ronnie Roller的Frototypedoc.com,這是一種與原型文檔的不斷增長(zhǎng)相符的資源。玩得開(kāi)心!

常見(jiàn)問(wèn)題(常見(jiàn)問(wèn)題解答)關(guān)於無(wú)痛的JavaScript原型>

無(wú)痛的JavaScript原型是什麼?

無(wú)痛的JavaScript原型是JavaScript的獨(dú)特功能,它允許使用自己的屬性和方法創(chuàng)建新對(duì)象。這是可以創(chuàng)建其他對(duì)象的藍(lán)圖。當(dāng)您要?jiǎng)?chuàng)建具有相同屬性和方法的多個(gè)對(duì)象時(shí),此功能特別有用。它促進(jìn)了代碼可重複性和效率。

>

>無(wú)痛的JavaScript原型與其他JavaScript特徵有何不同?

>

與其他JavaScript特徵不同,無(wú)痛的JavaScript原型允許使用自己獨(dú)特的屬性和方法來(lái)創(chuàng)建對(duì)象。這意味著您可以從相同的原型創(chuàng)建多個(gè)對(duì)象,每個(gè)對(duì)像都有其獨(dú)特的屬性和方法。這與其他JavaScript功能不同,後者僅允許創(chuàng)建單個(gè)對(duì)象。

>

如何創(chuàng)建一個(gè)無(wú)痛的JavaScript原型?

>創(chuàng)建一個(gè)涉及無(wú)痛的JavaScript原型涉及定義一個(gè)函數(shù),該函數(shù)將用作原型,然後使用“新’密鑰單詞”來(lái)創(chuàng)建新的Optife otty protots類(lèi)型。這是一個(gè)簡(jiǎn)單的示例:


函數(shù)汽車(chē)(製造,模型,年){
this.make = make; make; this.year = year; y>>} >}
}


var mycar = new Car(' “ Mycar”是一種由“汽車(chē)”原型創(chuàng)建的新對(duì)象。

我可以在創(chuàng)建它之後添加屬性嗎?這是使用“原型”屬性完成的。這是一個(gè)示例:

car.prototype.color ='black';

在此示例中,“顏色”屬性被添加到“ car”原型中。

>

>我可以將方法添加到無(wú)痛的JavaScript原型嗎?這與使用“原型”屬性相同的方式與添加屬性相同。以下是一個(gè)示例:

car.protype.start = function(){
console.log('car start'start');
} } }

在本示例中,在本示例中,'start'方法添加到'car'''''''''''''''''''''''''''proct.

上是什麼效果? JavaScript原型是代碼可重複性和效率。通過(guò)創(chuàng)建原型,您可以創(chuàng)建具有相同屬性和方法的多個(gè)對(duì)象,而無(wú)需重新定義每個(gè)對(duì)象的這些屬性和方法。這可以節(jié)省大量時(shí)間並使您的代碼更有效。

>使用無(wú)痛的JavaScript原型?

>一個(gè)潛在的缺點(diǎn)來(lái)使用無(wú)痛的JavaScript原型,因?yàn)樗梢员绕渌鸍avaScript功能更複雜地理解和使用。但是,一旦您了解了它的工作原理,它就可以是一個(gè)非常強(qiáng)大的工具。

我可以使用其他JavaScript功能使用無(wú)痛的JavaScript原型嗎?實(shí)際上,它經(jīng)常與其他功能一起使用以創(chuàng)建更複雜和更強(qiáng)大的應(yīng)用程序。

是所有瀏覽器中支持的無(wú)痛的JavaScript原型嗎?

是的,是的,在所有現(xiàn)代瀏覽器中都支持無(wú)痛的Javascript原型。但是,檢查您使用的任何JavaScript功能的特定瀏覽器支持總是一個(gè)好主意。

>

我在哪裡可以了解有關(guān)無(wú)痛Javascript原型的更多信息?

>

>在線(xiàn)可用的許多資源可以在線(xiàn)學(xué)習(xí)更多有關(guān)無(wú)痛JavaScript原型的信息。一些好的起點(diǎn)包括Mozilla開(kāi)發(fā)人員網(wǎng)絡(luò)(MDN)以及Codecademy and Udemy等網(wǎng)站上可用的各種JavaScript教程和課程。

>

以上是使用原型無(wú)痛的JavaScript的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線(xiàn)上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

Laravel 教程
1597
29
PHP教程
1488
72
如何在node.js中提出HTTP請(qǐng)求? 如何在node.js中提出HTTP請(qǐng)求? Jul 13, 2025 am 02:18 AM

在Node.js中發(fā)起HTTP請(qǐng)求有三種常用方式:使用內(nèi)置模塊、axios和node-fetch。 1.使用內(nèi)置的http/https模塊無(wú)需依賴(lài),適合基礎(chǔ)場(chǎng)景,但需手動(dòng)處理數(shù)據(jù)拼接和錯(cuò)誤監(jiān)聽(tīng),例如用https.get()獲取數(shù)據(jù)或通過(guò).write()發(fā)送POST請(qǐng)求;2.axios是基於Promise的第三方庫(kù),語(yǔ)法簡(jiǎn)潔且功能強(qiáng)大,支持async/await、自動(dòng)JSON轉(zhuǎn)換、攔截器等,推薦用於簡(jiǎn)化異步請(qǐng)求操作;3.node-fetch提供類(lèi)似瀏覽器fetch的風(fēng)格,基於Promise且語(yǔ)法簡(jiǎn)單

JavaScript數(shù)據(jù)類(lèi)型:原始與參考 JavaScript數(shù)據(jù)類(lèi)型:原始與參考 Jul 13, 2025 am 02:43 AM

JavaScript的數(shù)據(jù)類(lèi)型分為原始類(lèi)型和引用類(lèi)型。原始類(lèi)型包括string、number、boolean、null、undefined和symbol,其值不可變且賦值時(shí)復(fù)制副本,因此互不影響;引用類(lèi)型如對(duì)象、數(shù)組和函數(shù)存儲(chǔ)的是內(nèi)存地址,指向同一對(duì)象的變量會(huì)相互影響。判斷類(lèi)型可用typeof和instanceof,但需注意typeofnull的歷史問(wèn)題。理解這兩類(lèi)差異有助於編寫(xiě)更穩(wěn)定可靠的代碼。

JavaScript時(shí)間對(duì)象,某人構(gòu)建了一個(gè)eactexe,在Google Chrome上更快的網(wǎng)站等等 JavaScript時(shí)間對(duì)象,某人構(gòu)建了一個(gè)eactexe,在Google Chrome上更快的網(wǎng)站等等 Jul 08, 2025 pm 02:27 PM

JavaScript開(kāi)發(fā)者們,大家好!歡迎閱讀本週的JavaScript新聞!本週我們將重點(diǎn)關(guān)注:Oracle與Deno的商標(biāo)糾紛、新的JavaScript時(shí)間對(duì)象獲得瀏覽器支持、GoogleChrome的更新以及一些強(qiáng)大的開(kāi)發(fā)者工具。讓我們開(kāi)始吧! Oracle與Deno的商標(biāo)之爭(zhēng)Oracle試圖註冊(cè)“JavaScript”商標(biāo)的舉動(dòng)引發(fā)爭(zhēng)議。 Node.js和Deno的創(chuàng)建者RyanDahl已提交請(qǐng)願(yuàn)書(shū),要求取消該商標(biāo),他認(rèn)為JavaScript是一個(gè)開(kāi)放標(biāo)準(zhǔn),不應(yīng)由Oracle

什麼是緩存API?如何與服務(wù)人員使用? 什麼是緩存API?如何與服務(wù)人員使用? Jul 08, 2025 am 02:43 AM

CacheAPI是瀏覽器提供的一種緩存網(wǎng)絡(luò)請(qǐng)求的工具,常與ServiceWorker配合使用,以提升網(wǎng)站性能和離線(xiàn)體驗(yàn)。 1.它允許開(kāi)發(fā)者手動(dòng)存儲(chǔ)如腳本、樣式表、圖片等資源;2.可根據(jù)請(qǐng)求匹配緩存響應(yīng);3.支持刪除特定緩存或清空整個(gè)緩存;4.通過(guò)ServiceWorker監(jiān)聽(tīng)fetch事件實(shí)現(xiàn)緩存優(yōu)先或網(wǎng)絡(luò)優(yōu)先等策略;5.常用於離線(xiàn)支持、加快重複訪(fǎng)問(wèn)速度、預(yù)加載關(guān)鍵資源及後臺(tái)更新內(nèi)容;6.使用時(shí)需注意緩存版本控制、存儲(chǔ)限制及與HTTP緩存機(jī)制的區(qū)別。

處理諾言:鏈接,錯(cuò)誤處理和承諾在JavaScript中 處理諾言:鏈接,錯(cuò)誤處理和承諾在JavaScript中 Jul 08, 2025 am 02:40 AM

Promise是JavaScript中處理異步操作的核心機(jī)制,理解鍊式調(diào)用、錯(cuò)誤處理和組合器是掌握其應(yīng)用的關(guān)鍵。 1.鍊式調(diào)用通過(guò).then()返回新Promise實(shí)現(xiàn)異步流程串聯(lián),每個(gè).then()接收上一步結(jié)果並可返回值或Promise;2.錯(cuò)誤處理應(yīng)統(tǒng)一使用.catch()捕獲異常,避免靜默失敗,並可在catch中返回默認(rèn)值繼續(xù)流程;3.組合器如Promise.all()(全成功才成功)、Promise.race()(首個(gè)完成即返回)和Promise.allSettled()(等待所有完成)

利用Array.Prototype方法用於JavaScript中的數(shù)據(jù)操作 利用Array.Prototype方法用於JavaScript中的數(shù)據(jù)操作 Jul 06, 2025 am 02:36 AM

JavaScript數(shù)組內(nèi)置方法如.map()、.filter()和.reduce()可簡(jiǎn)化數(shù)據(jù)處理;1).map()用於一對(duì)一轉(zhuǎn)換元素生成新數(shù)組;2).filter()按條件篩選元素;3).reduce()用於聚合數(shù)據(jù)為單一值;使用時(shí)應(yīng)避免誤用導(dǎo)致副作用或性能問(wèn)題。

JS綜述:深入研究JavaScript事件循環(huán) JS綜述:深入研究JavaScript事件循環(huán) Jul 08, 2025 am 02:24 AM

JavaScript的事件循環(huán)通過(guò)協(xié)調(diào)調(diào)用棧、WebAPI和任務(wù)隊(duì)列來(lái)管理異步操作。 1.調(diào)用棧執(zhí)行同步代碼,遇到異步任務(wù)時(shí)交由WebAPI處理;2.WebAPI在後臺(tái)完成任務(wù)後將回調(diào)放入相應(yīng)的隊(duì)列(宏任務(wù)或微任務(wù));3.事件循環(huán)檢查調(diào)用棧是否為空,若為空則從隊(duì)列中取出回調(diào)推入調(diào)用棧執(zhí)行;4.微任務(wù)(如Promise.then)優(yōu)先於宏任務(wù)(如setTimeout)執(zhí)行;5.理解事件循環(huán)有助於避免阻塞主線(xiàn)程並優(yōu)化代碼執(zhí)行順序。

了解事件在JavaScript DOM事件中冒泡和捕獲 了解事件在JavaScript DOM事件中冒泡和捕獲 Jul 08, 2025 am 02:36 AM

事件冒泡是從目標(biāo)元素向外傳播到祖先節(jié)點(diǎn),事件捕獲則是從外層向內(nèi)傳播到目標(biāo)元素。 1.事件冒泡:點(diǎn)擊子元素後,事件依次向上觸發(fā)父級(jí)元素的監(jiān)聽(tīng)器,例如點(diǎn)擊按鈕後先輸出Childclicked,再輸出Parentclicked。 2.事件捕獲:設(shè)置第三個(gè)參數(shù)為true,使監(jiān)聽(tīng)器在捕獲階段執(zhí)行,如點(diǎn)擊按鈕前先觸發(fā)父元素的捕獲監(jiān)聽(tīng)器。 3.實(shí)際用途包括統(tǒng)一管理子元素事件、攔截預(yù)處理和性能優(yōu)化。 4.DOM事件流分為捕獲、目標(biāo)和冒泡三個(gè)階段,默認(rèn)監(jiān)聽(tīng)器在冒泡階段執(zhí)行。

See all articles