div.onclick = div_onclick; //為事件綁定事件函數(shù)function div_onclick(){alert("div onclick event"); var div = document.createElement("div"); div.onclick = div_onclick(str); //----------------錯(cuò)誤的代碼function div_onclick(str){alert(str); }其中錯(cuò)誤的那行代碼的真實(shí)運(yùn)行情況應(yīng)該是:先以str作為參數(shù)調(diào)用div_onclick函數(shù),顯然,調(diào)用的結(jié)果就是彈出了alert窗口,點(diǎn)擊確定后,div_onclick函數(shù)將返回,返回值再給div.onclick賦值,這和我們打算將函數(shù)div_onclick綁定到div.onclick上的初衷是不符合的。這就存在了一個(gè)問(wèn)題,我們既要為div.onclick綁定一個(gè)函數(shù),又要能夠?yàn)榻壎ǖ暮瘮?shù)傳遞一些參數(shù),顯然,我們需要能夠?qū)?shù)的函數(shù)以及我們想要傳遞給它的參數(shù)一起包裝成一個(gè)無(wú)參數(shù)的新函數(shù),再將這個(gè)無(wú)參數(shù)的新函數(shù)綁定到相應(yīng)的事件上面去,實(shí)現(xiàn)的方法有好多種,這里介紹一種比較簡(jiǎn)單通用的方法,這種方法可以將任意一個(gè)帶參數(shù)的函數(shù)包裝為一個(gè)不帶參數(shù)的函數(shù),該方法要求添加如下函數(shù)定義:Function.prototype.bind = function(){var __method = this; var arg = arguments; return function() { __method.apply(window, arg);}}關(guān)于這個(gè)函數(shù)的實(shí)現(xiàn)就不再多解釋了,這里只說(shuō)明一點(diǎn),這個(gè)代碼段是為所有的函數(shù)定義了一個(gè)函數(shù)名為bind的公共靜態(tài)函數(shù),由于javascript的面向?qū)ο蟮奶匦裕沟萌魏我粋€(gè)以function來(lái)定義的函數(shù)本身都是一個(gè)Function類,關(guān)于上面的函數(shù)定義方式,請(qǐng)參閱《Javascript——Prototype Based Language》。將上面的函數(shù)加入到你的文件中,就可以使用它來(lái)將帶參數(shù)的函數(shù)包裝成一個(gè)無(wú)參數(shù)函數(shù)了。在div的例子中,我們將得到如下的代碼:Function.prototype.bind = function(){var __method = this; var arg = arguments; return function() { __method.apply(window, arg);}}var str = "div onclick event"; var div = document.createElement("div"); div.onclick = div_onclick.bind(str); //將帶參數(shù)的函數(shù)包裝成無(wú)參數(shù)的函數(shù)function div_onclick(str){alert(str); }這樣,就能實(shí)現(xiàn)我們的初衷了。更復(fù)雜的,參數(shù)可以是多個(gè),也可以是任意類型的。這里我給出兩個(gè)例子,以說(shuō)明這種應(yīng)用。

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出偏關(guān)免費(fèi)做網(wǎng)站回饋大家。
基本包裝類型:內(nèi)部創(chuàng)建對(duì)象,可以調(diào)用它自己內(nèi)部的特殊行為
如果你是真的要搞懂JavaScript的話, 請(qǐng)拋棄Java類似的基本/包裝/引用等概念
在ECMA-262規(guī)范中, ECMAScript/JavaScript(下簡(jiǎn)稱ES)只有七種類型
Undefined, Null, Boolean, String, Symbol, Number, Object
至於Function, Array等都是繼承自O(shè)bject的類型
不過(guò)你的問(wèn)題, 按照一般的思考方式, 仍舊是可以回答的
1. B/S/N是基本類型, 不具有引用類型的特徵, 你能夠訪問(wèn)基本類型的屬性
例如
'a string'.replace()
30 .toString(16)
是因?yàn)镋S的解釋器會(huì)生成臨時(shí)對(duì)象, 并以這個(gè)對(duì)象為this進(jìn)行了函數(shù)調(diào)用
2. 基本類型不具有屬性和方法, 引用類型可以有屬性和方法
包裝類型可以有也可以沒(méi)有, 解釋引擎可以在這個(gè)問(wèn)題上任意實(shí)現(xiàn)
3. 包裝類型是臨時(shí)的, 由解釋引擎決定如何進(jìn)行的, 是純腳本層面不接觸的
引用類型就是對(duì)象
當(dāng)前標(biāo)題:javascript包裝,js基本包裝類型
網(wǎng)站地址:http://chinadenli.net/article38/dsedopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、云服務(wù)器、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)