首頁 web前端 js教程 关于Javascript 的 prototype问题。_javascript技巧

关于Javascript 的 prototype问题。_javascript技巧

May 16, 2016 pm 07:21 PM

prototype

1、
prototype是与Clone联系起来的,
也就是说,当创建实例时,prototype会把成员clone到该Class(function)的实例上。
Detail: 最常见的几个内置内对象里的prototype,如:Array原型有join, split方法,
当创建数组a时var a=[1,2],原型里的所有方法都被clone到a上。

2、this是该类的实例指针(该指针为"动态联编")。如何理解js this的动态联编,请参考我写的这篇文章:http://blog.never-online.net/article.asp?id=117
当创建该类实例时,实例具有预先定义的所有以this.p类似的成员。也具有prototype原型里定义的成员,如果类内部定义与prototype里的一个定义相同,则不是重写:

看这个例子,jsclass定义的this.func,还有prototype里定义的func,如果jsclass内部有成员与原型里的相同,实例化时优先权为this.func,但注意,原型里并不是重写func,而是jsclass实例共有的,虽然其优先权没有this.func高,与此同时,我们也可以以这种方式来理解prototype与类内部定义成员:

<script> <BR>function jsclass() { <BR> this.p = "never-online"; <BR> this.func = function () { <BR> alert('func'); <BR> } <BR>} <BR>jsclass.prototype = { <BR> func : function () { <BR> alert(this.p); <BR> } <BR>} <BR>var a = new jsclass(); <BR>a.func(); <BR>delete a.func; <BR>a.func(); <BR></script>

我们再把上面的代码修改一下。这样看:
<script> <BR>function jsclass() { <BR> this.p = "never-online"; <BR> this.func = function () { <BR> alert('func'); <BR> } <BR>} <BR>jsclass.prototype = { <BR> func : function () { <BR> alert(this.p?this.p:'no value'); <BR> } <BR>} <BR>var a = new jsclass(); <BR>a.func();//调用内部成员 <BR>delete a.func;//此处删除是的类内部定义的func <BR>a.func();//调用prototype成员 <BR>delete a.func;//试图再次删除func(prototype) <BR>a.func();//删除无效(内部的func已经被删除),依然可打印输出 <BR></script>

注释:类内部的成员可以用delete删除,而原型里定义的,则不能用delete 实例名.成员名来删除的。
如果用prototype定义后,实例化时:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
也就是在上面的
delete a.func;//此处删除是的类内部定义的func
a.func();//调用prototype成员
之后,再次调用a.func(),调用时,通过调用prototype.func来实现的。而并非a.func(),这也解释了为什么在jsclass内部定义func与在prototype定义func时不会有重写现象。 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何在技嘉主機板上設定鍵盤啟動功能 (技嘉主機板啟用鍵盤開機方式) 如何在技嘉主機板上設定鍵盤啟動功能 (技嘉主機板啟用鍵盤開機方式) Dec 31, 2023 pm 05:15 PM

技嘉的主機板怎麼設定鍵盤開機首先,要支援鍵盤開機,一定是PS2鍵盤! !設定步驟如下:第一步:開機按Del或F2進入bios,到bios的Advanced(進階)模式普通主機板預設進入主機板的EZ(簡易)模式,需要按F7切換到進階模式,ROG系列主機板預設進入bios的進階模式(我們用簡體中文來示範)第二步:選擇到-【進階】-【進階電源管理(APM)】第三步:找到選項【由PS2鍵盤喚醒】第四步:這個選項預設是Disabled(關閉)的,下拉之後可以看到三種不同的設定選擇,分別是按【空白鍵】開機、按組

CS玩家的首選:建議的電腦配置 CS玩家的首選:建議的電腦配置 Jan 02, 2024 pm 04:26 PM

1.處理器在選擇電腦配置時,處理器是至關重要的組件之一。對於玩CS這樣的遊戲來說,處理器的效能直接影響遊戲的流暢度和反應速度。建議選擇IntelCorei5或i7系列的處理器,因為它們具有強大的多核心處理能力和高頻率,可以輕鬆應對CS的高要求。 2.顯示卡顯示卡是遊戲表現的重要因素之一。對於射擊遊戲如CS而言,顯示卡的表現直接影響遊戲畫面的清晰度和流暢度。建議選擇NVIDIAGeForceGTX系列或AMDRadeonRX系列的顯示卡,它們具備出色的圖形處理能力和高幀率輸出,能夠提供更好的遊戲體驗3.內存電

主機板上的數位音訊輸出介面-SPDIF OUT 主機板上的數位音訊輸出介面-SPDIF OUT Jan 14, 2024 pm 04:42 PM

主機板上SPDIFOUT連接線序最近我遇到了一個問題,就是關於電線的接線順序。我上網查了一下,有些資料說1、2、4對應的是out、+5V、接地;而有些資料則說1、2、4對應的是out、接地、+5V。最好的方法是查看你的主機板說明書,如果找不到說明書,你可以使用萬用電表進行測量。首先找到接地,然後就可以確定其他的接線順序了。主機板vdg怎麼接線連接主機板的VDG接線時,您需要將VGA連接線的一端插入顯示器的VGA接口,另一端插入電腦的顯示卡VGA接口。請注意,不要將其插入主機板的VGA介面。完成連接後,您可以

廣聯達軟體電腦設定推薦;廣聯達軟體對電腦的設定需求 廣聯達軟體電腦設定推薦;廣聯達軟體對電腦的設定需求 Jan 01, 2024 pm 12:52 PM

廣聯達軟體是一家專注於建築資訊化領域的軟體公司,其產品被廣泛應用於建築設計、施工、營運等各個環節。由於廣聯達軟體功能複雜、資料量大,對電腦的配置要求較高。本文將從多個方面詳細說明廣聯達軟體的電腦配置推薦,以幫助讀者選擇適合的電腦配置處理器廣聯達軟體在進行建築設計、模擬等操作時,需要進行大量的數據計算和處理,因此對處理器的要求較高。建議選擇多核心、高主頻的處理器,如英特爾i7系列或AMDRyzen系列。這些處理器具有較強的運算能力和多執行緒處理能力,能夠更好地滿足廣聯達軟體的需求。記憶體記憶體是影響計算

最佳顯示卡驅動版本是? (哪個顯示卡驅動版本最好用) 最佳顯示卡驅動版本是? (哪個顯示卡驅動版本最好用) Jan 10, 2024 pm 11:13 PM

哪个版本的显卡驱动最好用1、没有绝对的最好版本,选择适合自己电脑的版本最重要;2、因为显卡驱动版本的适用性和稳定性与电脑硬件环境和系统的配置有关;3、可以在官网查看电脑和显卡的详细信息,根据信息选择适合的驱动版本,也可以参考其他用户的评价选择。建议在安装驱动之前备份系统,以免出现意外情况。显卡驱动版本472.19系列是非常出色的选择。目前,472版本的驱动兼容性是最优秀的。安装472版本的驱动也能够使显卡发挥出最佳性能。NVIDIA显卡驱动Win7安装版,编号为2、472.19,是一款质量显著的

我準備去西藏旅行背包去①背多少公升的包合適把你認為最好的配置說下本人170體力不錯第一次 我準備去西藏旅行背包去①背多少公升的包合適把你認為最好的配置說下本人170體力不錯第一次 Jan 07, 2024 am 10:06 AM

我準備去西藏旅行背包去①背多少升的包合適把你認為最好的配置說下本人170體力不錯第一次去徒步多就60升或以上的徒步少就60升以下的全程都坐車就不用背包,旅行箱更方便,真要隨身帶東西,弄個25~40公升的就綽綽有馀西藏旅遊必備品:太陽眼鏡、太陽帽、防曬霜、護膚霜、潤唇膏、長袖上衣、毛衣;對於特殊旅遊或去阿里、藏北、川藏線旅遊,建議帶:睡袋(防寒)、床單(防髒)、羽絨服、旅遊鞋或登山鞋、拖鞋、牙刷、牙膏、毛巾、捲筒紙、紙內褲、消毒濕紙巾、手電筒、防水火柴、刀具、繩子。前運包能裝電腦嗎能裝電腦,有些背包有

請推薦一款性價比較高的1155針CPU 請推薦一款性價比較高的1155針CPU Jan 14, 2024 pm 01:30 PM

求建議1155針的cpu哪個最好目前效能最高的1155針CPU是IntelCorei7-3770K。它擁有4個核心和8個線程,基礎頻率為3.5GHz,並支援TurboBoost2.0技術,最高可達到3.9GHz。此外,它還搭載了8MB的三級緩存,是一款非常出色的處理器LGA1155針最強的CPUIntel酷睿i73770K。 LGA1155介面為二三代酷睿處理器所使用的介面類型,效能最好的為Intel酷睿i73770K,這款處理器參數如下:1.適用類型:桌上型電腦;2.CPU系列:酷睿i7;3.CPU

如何把電腦的百兆網路埠升級為千兆網路埠? 如何把電腦的百兆網路埠升級為千兆網路埠? Dec 31, 2023 pm 05:32 PM

電腦100兆網口怎麼變成千兆的要將電腦的100兆網口升級為千兆網口,一般需要按照以下步驟進行操作:1.確認網卡是否支援千兆網速:首先需要確認電腦上的網卡是否支援千兆以太網,如果不支援的話就無法實現將100兆網口提速至千兆。 2.更換網路線:要達到千兆網速,需要使用Cat5e或更高規格的網路線,因為Cat5e網路線可以支援千兆乙太網,而對於100兆乙太網路來說則只需使用Cat5網路線即可。 3.更改網卡驅動程式:如果您的網卡支援千兆以太網,則需要更新網卡的驅動程式。可以前往網卡製造商的官方網站,下載並安裝最新的

See all articles