锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鏈嬪弸緇欎簡涓猙log,涓撻棬鏀綼jax鐨勬枃绔犲惂錛佷互鍚庤繖涓撻棬鍐欏叧浜巎ava鐨勪笢瑗垮惂銆?br />http://zkj.wisekernel.net
璋㈣阿鏀寔銆?img src ="http://m.tkk7.com/zkjbeyond/aggbug/64760.html" width = "1" height = "1" />
]]>
闃呰鍏ㄦ枃
]]>
1銆佸叧浜巎avascript鐨刟pply鍜宑all鍑芥暟
prototype.js涓敤浜嗗ぇ閲忕殑apply鍜宑all鍑芥暟錛屼笉娉ㄦ剰浼氶犳垚鐞嗚В鍋忓樊銆?br />瀹樻柟瑙i噴錛氬簲鐢ㄦ煇涓瀵硅薄鐨勪竴涓柟娉曪紝鐢ㄥ彟涓涓璞℃浛鎹㈠綋鍓嶅璞°?br />apply涓巆all鐨勫尯鍒槸絎簩涓弬鏁頒笉鍚屻俛pply鏄?鏁扮粍鎴栬卆rguments 瀵硅薄銆傝宑all鏄楀彿闅斿紑鐨勪換浣曠被鍨嬨?/p>
apply,call鏂規硶鏈璁╀漢娣鋒穯鐨勫湴鏂逛篃鏄痑pply,call鐨勭壒鑹層備絾鏈濂戒笉瑕佹互鐢ㄣ?br />鑳芥敼鍙樿皟鐢ㄥ嚱鏁扮殑瀵硅薄銆傚涓嬩緥錛屽嚱鏁頒腑鐢ㄥ埌this鍏抽敭瀛楋紝榪欐椂鍊檛his浠h〃鐨勬槸apply,call鍑芥暟鐨勭涓涓弬鏁般?br />
<script src="prototype1.3.1.js"></script>
<input type="text" id="myText"聽 value="input text">
<script>
聽聽 function Obj(){
聽聽聽聽聽聽 this.value="瀵硅薄錛?;
聽聽 }
聽聽 var value="global 鍙橀噺";
聽聽 function Fun1(){
聽聽聽聽聽聽 alert(this.value);
聽聽 }
聽聽 window.Fun1();
聽聽 Fun1.apply(window);
聽聽 Fun1.apply($('myText'));
聽聽 Fun1.apply(new Obj());
</script>
2銆佸叧浜庨棴鍖?/strong>
<script src="prototype1.3.1.js"></script> <script src="prototype1.3.1.js"></script> 浠庝笂闈唬鐮佸彲浠ョ湅鍑?font color="#ff0000">bind/bindAsEventListener鍙槸鍖呰浜嗕竴涓媋pply/call鏂規硶錛屾敼鍙樻柟娉曠殑璋冪敤瀵硅薄銆?/font>濡備緥瀛愶紝浣犲彲浠ユ妸obj.getName鏂規硶杞寲鎴愪換浣曞璞¤皟鐢紝騫朵笖鎶婃柟娉曡琛ㄥ崟鍏冪礌瑙﹀彂銆傦紙bind鍜宐indAsEventListener涔嬮棿鍙槸榪斿洖鍑芥暟鐨勫弬鏁頒笉鍚岋級 <script src="prototype1.3.1.js"></script>
5銆佸叧浜庝簨浠剁殑娉ㄥ唽
<script src="prototype1.3.1.js"></script> 鎵ц涓婇潰浠g爜錛屼綘灝辮兘鏄庣櫧Event.observe涓巄ind/bindAsEventListener涔嬮棿鐨勫尯鍒細
6銆佸叧浜庝簨浠剁洃鍚渶浣沖疄璺?/strong>
function associateObjWithEvent(obj, methodName){ 鏈夋椂闂存垜鎯崇敤浠ヤ笂鎬濇兂瀹炵幇涓涓綉欏墊誕鍔ㄦ鎷栨媺鐨勪唬鐮侊紙鍏跺疄宸茬粡鏈夊緢澶氫簡錛夛紝寰呯畫........ 聽 聽 寮曠敤錛歛jaxcn.org 閾炬帴銆傝阿璋lee
prototype.js鍦–lass.create,bind絳変腑鐢ㄥ埌javascript鐨勯棴鍖呯壒鑹層備絾鏁翠綋涓妏rototype.js瀵逛簬寮哄ぇ鐨勯棴鍖呯壒鎬х敤鐨勪笉澶氥傚ぇ瀹跺彲浠ュ弬闃呮垜緲昏瘧鐨?a class="" title="" href="/zkjbeyond/archive/2006/05/23/47725.html" target="_blank">綃囨枃绔犱簡瑙i棴鍖?/a>銆?br />3銆佽鎴戞瘮杈冨弽鎰熺殑涓や釜鏂規硶
錛?錛?br />var Class = {
聽 create: function() {
聽聽聽 return function() {
聽聽聽聽聽 this.initialize.apply(this, arguments);
聽聽聽 }
聽 }
}
寰堣鍘岀敤鍒殑璇█鐨勯鏍兼潵鍐檍avascript銆傜敤榪欎釜鏂規硶鏋勯犺嚜瀹氫箟綾宦?騫舵病鏈夎寰楁湁澶氭柟渚匡紝鍑忓皯浠g爜琛屾暟錛屽彧浼氳浜洪毦鐞嗚В錛屽瀹氫箟涓涓猧nitialize鏂規硶銆?br />鍏跺疄璁ㄥ帉榪欐潯鏈変簺鐗靛己錛屼笉榪囦慨鏀筄bject鐨勫師鍨嬪璞″氨鏈夌偣榪囧垎浜嗐?br />錛?錛塐bject.prototype.extend
聽 鍏堜笉榪囦綘鍙栦釜extend鐨勫悕瀛椾細璁╃啛鎮塲ava鐨勪漢寮曡搗鐨勬涔夈備慨鏀筄bject鐨刾rototype灝辮涓嶈繃鍘諱簡銆備笉鐭ラ亾浣滆呮槸鎬庝箞鑰冭檻鐨勩傚綋浣爁or in寰幆瀵硅薄鏄紝楹葷儲灝辨潵浜嗐傚彲鑳芥湁浜轟細闂綘for in騫插悧銆?鎴戜竴涓」鐩腑鏃㈢敤浜咲WR,涔熺敤浜唒rototype.js錛宒wr榪斿洖鐨刯avascript瀵硅薄閮藉浜嗕釜exetend灞炴э紝榪樺緱鐗規畩澶勭悊銆?br />聽 浠ュ墠鎴戞瘮杈冭繃dojo鍜宲rototype.js涓戶鎵跨殑瀹炵幇錛岀幇鍦ㄦ垜鏄庣櫧涓亾鐞嗐傚浜巎avascript榪欑娌℃湁闈欐佺被鍨嬫鏌ワ紝璇硶瀹芥澗鐨勮璦鏉ヨ錛屽鏋滀綘閫夋嫨浜嗘煇涓猨s綾誨簱錛岄偅浣犱篃蹇呴』閫傚簲浣滆呭啓javascript鐨勯鏍箋俻rototype.js鐨勪綔鑰呭extend鐨勪嬌鐢ㄧ倝鐏函闈掞紝濡傛灉鎴戜滑涓嶅綋瀹冨彧鏄釜灞炴ф嫹璐濈殑鍑芥暟鐨勮瘽錛屽璇昏prototype.js鐨勪唬鐮佹槸濂界殑銆?br />4銆佸叧浜庡嚱鏁扮殑緇戝畾
聽 綾誨簱鎻愪緵浜咶unction.prototype.bind聽 Function.prototype.bindAsEventListener涓や釜鏂規硶銆傞鍏堟垜浠粠姒傚康涓婅В閲婁竴涓繖涓や釜鏂規硶銆?br />浠諱綍涓涓嚱鏁伴兘鍙互璋冪敤榪欎袱涓柟娉曪紱鍙傛暟鐨勬槸javascript瀵硅薄鎴栫綉欏典笂鍏冪礌瀵硅薄錛涜繑鍥炵被鍨嬫槸涓嚱鏁板璞°?br />鏈潵鎴戝氨鏄釜鍑芥暟錛岃繑鍥炶繕鏄嚱鏁幫紝鍒拌繖涓や釜鍑芥暟鏈変粈涔堜笉鍚屽憿銆傜湅瀹炵幇浠g爜錛屽叧閿繕鏄痑pply\call鍑芥暟鐨勪唬鐮併傚叾瀹炶繖閲屽彧鏄漿鍖栦簡涓涓嬫柟娉曡皟鐢ㄧ殑瀵硅薄銆?/p>
<input type=checkbox id=myChk name="asf" value=1> Test
<script>
聽聽聽 var CheckboxWatcher = Class.create();
聽聽聽 CheckboxWatcher.prototype = {
聽聽聽聽聽聽 initialize: function(chkBox, message) {
聽聽聽聽聽聽聽聽聽聽聽 this.chkBox = $(chkBox);
聽聽聽聽聽聽聽聽聽聽聽 this.message = message;
聽聽聽聽聽聽聽聽聽聽聽 this.chkBox.onclick = this.showMessage.bindAsEventListener(this);
聽聽聽聽聽聽 },
聽聽聽聽聽聽 showMessage: function(evt) {
聽聽聽聽聽聽聽聽聽 alert(this.message + ' (' + evt.type + ')');
聽聽聽聽聽聽 }
聽聽聽 };
new CheckboxWatcher('myChk','message!!!!');
//$('myChk').onclick=function(){};
</script>
榪欐槸 https://compdoc2cn.dev.java.net/ 涓婁婦鐨勪緥瀛愶紝涓漢鎰熻娌′粈涔堟剰鎬濓紝鍙嶈岃鎴戝bind,bindAsEventListener鏈変簺鍙嶆劅銆傦紙javascript灝辨槸榪欐牱錛屾槑鏄庡ぇ瀹墮兘鐭ラ亾鐨勮娉曪紝浣嗗啓鍑烘潵鐨勪唬鐮佸樊鍒‘寰堝ぇ錛?br />鐪嬩笅闈唬鐮侊細
<input type=checkbox id=myChk name="chk" value=1> Test
<script>
function Class(){
聽聽聽 this.name="class";
}
Class.prototype.getName=function(){
聽聽聽 alert(this.name);
}
var obj=new Class();
//$('myChk').onclick=obj.getName;
$('myChk').onclick=obj.getName.bind(obj);
//$('myChk').onclick=obj.getName.bind($('myChk'));
</script>
榪欎袱涓柟娉曚篃鍙互鐢ㄥ湪瀵硅薄涔嬮棿鐨勬柟娉曢噸鐢紝瀹炵幇綾諱技緇ф壙鏂規硶鐨勬蹇點傜湅浠ヤ笅浠g爜錛屽叾瀹炴槸姣旇緝鏃犺亰鐨勩?/p>
<script>
function Class1(name){
聽聽聽 this.name=name;
}
Class1.prototype.getName=function(){
聽聽聽 alert(this.name);
}
function Class2(name){
聽聽聽 this.name=name;
銆銆this.getName=Class1.prototype.getName.bind(this);
}
var obj1=new Class2("yql");
obj1.getName();
var obj2=new Object();
obj2.name="zkj";
obj2.fun=Class1.prototype.getName.bind(obj2);
obj2.fun();
</script>
鎴戜粠鏉ユ病璇昏繃prototype.js鐨勬墿灞曢」鐩唬鐮侊紝涔熶笉鐭ラ亾bind..鐨勬渶浣沖疄璺碉紝涓璧鋒寲鎺樺惂銆備絾浣犵粷瀵逛笉瑕佹妸bind/bindAsEventListener浠庣粦瀹氱殑璇嶄箟涓婃潵鐞嗚В錛屽彲鑳戒細璁╀綘鏇村姞榪鋒儜銆備粠apply/call鐞嗚В鏈川銆傚簲鐢ㄦ煇涓瀵硅薄鐨勪竴涓柟娉曪紝鐢ㄥ彟涓涓璞℃浛鎹㈠綋鍓嶅璞°?/p>
<input type=checkbox id=myChk name="chk" value=1> Test
<script>
Event.observe(myChk, 'click', showMessage, false);
//$('myChk').onclick=showMessage;
//$('myChk').onclick=showMessage.bind();
$('myChk').onclick=showMessage.bind($('myChk'));
function showMessage() {
聽聽聽聽聽 alert(this.value);
}
</script>
錛堬紤錛?鏄劇劧Event.observe鏈夐檺鍒訛紝鍙兘澶勭悊綆鍗曠殑鍑芥暟錛屽茍鍑芥暟涓笉鑳芥湁this涔嬬被鐨勪笢瑗褲?br />錛堬紥錛塃vent.observe鍐呴儴鐢ㄥ埌addEventListener錛廰ttachEvent銆傝兘鎶婂涓嚱鏁板姞鍒頒竴涓Е鍙戜簨浠訛紙window.onload錛夈俠ind鏄鐩栥?/p>
寰堟樉鐒秔rototype.js鎻愪緵鐨勪簨浠舵敞鍐屾柟娉曚笉鏄緢瀹屽杽銆傞偅鐪嬬湅dojo鐨勬椂闂存敞鍐屽惂錛?a class="" title="" target="_blank">涓枃鐗?/a>錛夛紝鏇村姞澶嶆潅錛屼及璁″緢澶氫漢鍍忔垜涓鏍鳳紝瀵逛簬dojo鏆傛椂鎸佽鏈涙佸害銆?br />濡傛灉浣犵湅榪囩殑鍓嶇瘒鍏充簬闂寘鐨勪粙緇嶏紝鍙兘瑙佽繃浠ヤ笅浠g爜銆?br />鐪嬩互涓嬩唬鐮佸墠鎴戞兂琛ㄨ堪涓涓鐐癸紝浠諱綍緗戦〉涓厓绱狅紝嫻忚鍣ㄩ兘浼氫負浣犲垱寤轟竴涓璞★紙瑙?/a>錛夈傦紙鎴戣寰楋級榪欎簺瀵硅薄涓庝綘寤虹珛javascript瀵硅薄鍖哄埆鏄畠浠湁浜嬩歡鐩戝惉錛屼細鍝嶅簲榧犳爣閿洏鐨勪簨浠躲傚鏋滀綘鐢ㄤ簡浠ヤ笅浠g爜錛岄偅涔堟妸浜嬩歡鐩戝惉浠g爜寰堝ソ鐨勮漿鍖栧埌浣犵殑javascript浠g爜涓?/p>
聽聽聽 return (function(e){
聽聽聽聽聽聽聽 e = e||window.event;
聽聽聽聽聽聽聽 return obj[methodName](e, this);
聽聽聽 });
}
function DhtmlObject(elementId){
聽聽聽 var el = getElementWithId(elementId);
聽聽聽 if(el){
聽聽聽聽聽聽聽 el.onclick = associateObjWithEvent(this, "doOnClick");
聽聽聽聽聽聽聽 el.onmouseover = associateObjWithEvent(this, "doMouseOver");
聽聽聽聽聽聽聽 el.onmouseout = associateObjWithEvent(this, "doMouseOut");
聽聽聽 }
}
DhtmlObject.prototype.doOnClick = function(event, element){
聽聽聽 ... // doOnClick method body.
}
DhtmlObject.prototype.doMouseOver = function(event, element){
聽聽聽 ... // doMouseOver method body.
}
DhtmlObject.prototype.doMouseOut = function(event, element){
聽聽聽 ... // doMouseOut method body.
}
聽
]]>
鏍規嵁 prototpe.js 鍜?dojo 鐩稿叧鐨勭戶鎵垮疄鐜拌璇存垜鐨勮鐐? 闃呰鍏ㄦ枃
]]>
]]>