国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
>原型的小助手
工作dom
“終于!”您在想:“他開(kāi)始了我們真正想知道的?!笔堑?,我把它留在了最后,以進(jìn)入原型的Ajax助手,因?yàn)樗鼈兘ㄔ谖覀円恢痹诮?jīng)歷的所有其他內(nèi)容之上,并且在談?wù)揂jax時(shí),它有助于理解原型的形式序列化,觀察者和插入。
總結(jié)
>
在此示例中,“顏色”屬性被添加到“ car”原型中。
>我可以將方法添加到無(wú)痛的JavaScript原型嗎?這與使用“原型”屬性相同的方式與添加屬性相同。以下是一個(gè)示例:
上是什么效果? JavaScript原型是代碼可重復(fù)性和效率。通過(guò)創(chuàng)建原型,您可以創(chuàng)建具有相同屬性和方法的多個(gè)對(duì)象,而無(wú)需重新定義每個(gè)對(duì)象的這些屬性和方法。這可以節(jié)省大量時(shí)間并使您的代碼更有效。
>一個(gè)潛在的缺點(diǎn)來(lái)使用無(wú)痛的JavaScript原型,因?yàn)樗梢员绕渌鸍avaScript功能更復(fù)雜地理解和使用。但是,一旦您了解了它的工作原理,它就可以是一個(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ō)的是:它占用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ù)定義的初始化方法,而不是采用傳統(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ì)象的屬性和方法復(fù)制到另一個(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ù)可以訪問(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方法采用的函數(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ì)愿意讓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ì)訪問(wèn)不同形式元素的方式之間的差異巧妙地平滑,以便正確處理輸入,選擇,復(fù)選框和無(wú)線電按鈕。 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í)令人發(fā)指。與其將計(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ù)采用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è)置的間隔重復(fù)進(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è)诒疚闹锌吹降哪菢樱筒粌H本身是有用的,而且為編寫(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)了代碼可重復(fù)性和效率。

>

>無(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原型是代碼可重復(fù)性和效率。通過(guò)創(chuàng)建原型,您可以創(chuàng)建具有相同屬性和方法的多個(gè)對(duì)象,而無(wú)需重新定義每個(gè)對(duì)象的這些屬性和方法。這可以節(jié)省大量時(shí)間并使您的代碼更有效。

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

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

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

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

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

>

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

>

>在線可用的許多資源可以在線學(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)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系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

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

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à)題

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語(yǔ)言,各自適用于不同的應(yīng)用場(chǎng)景。Java用于大型企業(yè)和移動(dòng)應(yīng)用開(kāi)發(fā),而JavaScript主要用于網(wǎng)頁(yè)開(kāi)發(fā)。

JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 JavaScript評(píng)論:簡(jiǎn)短說(shuō)明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對(duì)象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開(kāi)始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫(kù);4.處理時(shí)區(qū)問(wèn)題建議使用支持時(shí)區(qū)的庫(kù),如Luxon。掌握這些要點(diǎn)能有效避免常見(jiàn)錯(cuò)誤。

JavaScript與Java:開(kāi)發(fā)人員的全面比較 JavaScript與Java:開(kāi)發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

為什么要將標(biāo)簽放在的底部? 為什么要將標(biāo)簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript:探索用于高效編碼的數(shù)據(jù)類(lèi)型 JavaScript:探索用于高效編碼的數(shù)據(jù)類(lèi)型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。1.事件捕獲通過(guò)addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動(dòng)態(tài)內(nèi)容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助于精確控制JavaScript響應(yīng)用戶(hù)操作的時(shí)機(jī)和方式。

Java和JavaScript有什么區(qū)別? Java和JavaScript有什么區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語(yǔ)言。1.Java是靜態(tài)類(lèi)型、編譯型語(yǔ)言,適用于企業(yè)應(yīng)用和大型系統(tǒng)。2.JavaScript是動(dòng)態(tài)類(lèi)型、解釋型語(yǔ)言,主要用于網(wǎng)頁(yè)交互和前端開(kāi)發(fā)。

See all articles