当前位置: 首页 > Web前端 > HTML

自下而上理解这是什么

时间:2023-04-02 11:44:05 HTML

Whatisthis鍏充簬杩欎釜锛屾垜鎻愬嚭浜嗕互涓嬮棶棰橈細杩欎釜瀛樺偍鍦ㄥ摢閲岋紵杩欐槸鎬庝箞鍑虹幇鐨勫張鏄€庝箞娑堝け鐨勶紵杩欐槸鍋氫粈涔堢殑锛熻瀹屽叏鐞嗚В杩欎竴鐐癸紝鎴戜滑蹇呴』棣栧厛浜嗚В浠€涔堟槸JavaScript鎵ц涓婁笅鏂囧拰璋冪敤鍫嗘爤銆備负浜嗘竻妤氳捣瑙侊紝鎵ц涓婁笅鏂囨槸銆婃祻瑙堝櫒宸ヤ綔鍘熺悊涓庡疄璺点€嬬殑缁勫悎銆傛垜浠厛鐪嬭繖娈典唬鐮佺殑鍑芥暟璋冪敤杩囩▼锛歷ara=2functionadd(){varb=10returna+b}add()杩欐浠g爜寰堢畝鍗曪紝鍏堝垱寤轰竴涓猘dd鍑芥暟锛岀劧鍚庡湪璋冪敤杩欎釜鍑芥暟浠g爜鐨勫簳閮ㄣ€傚湪鍑芥暟add()鎵ц涔嬪墠锛屼篃灏辨槸绗?琛屼箣鍓嶏紝JavaScript寮曟搸浼氫负涓婇潰鐨勪唬鐮佸垱寤轰竴涓叏灞€鐨勬墽琛屼笂涓嬫枃锛屽寘鎷0鏄庣殑鍑芥暟鍜屽彉閲忋€傚彲浠ュ弬鑰冧笅鍥撅細浠庡浘涓彲浠ョ湅鍑猴紝浠g爜涓殑鍏ㄥ眬鍙橀噺鍜屽嚱鏁板瓨鏀惧湪鍏ㄥ眬涓婁笅鏂囩殑鍙橀噺鐜涓€傛墽琛屼笂涓嬫枃灏辩华鍚庯紝寮€濮嬫墽琛屽叏灞€浠g爜銆傚綋鎵ц鍒癮dd鏃讹紝JavaScript鍒ゆ柇杩欐槸涓€涓嚱鏁拌皟鐢紝鐒跺悗杩涜濡備笅鎿嶄綔锛氶鍏堬紝浠庡叏灞€鎵ц涓婁笅鏂囦腑鎻愬彇add鍑芥暟浠g爜銆傚叾娆★紝缂栬瘧add鍑芥暟鐨勪唬鐮佸苟鍒涘缓鍑芥暟鐨勬墽琛屼笂涓嬫枃鍜屽彲鎵ц浠g爜銆傛渶鍚庯紝鎵ц浠g爜骞惰緭鍑虹粨鏋溿€傝繖鏍凤紝褰揳dd鍑芥暟鎵ц鏃讹紝鎴戜滑灏辨湁浜嗕袱涓墽琛屼笂涓嬫枃鈥斺€斿叏灞€鎵ц涓婁笅鏂囧拰add鍑芥暟鐨勬墽琛屼笂涓嬫枃銆備篃灏辨槸璇达紝鍦ㄦ墽琛孞avaScript鏃讹紝鍙兘浼氭湁澶氫釜鎵ц涓婁笅鏂囷紝閭d箞JavaScript寮曟搸鏄浣曠鐞嗚繖浜涙墽琛屼笂涓嬫枃鐨勫憿锛熺瓟妗堟槸閫氳繃JavaScript璋冪敤鍫嗘爤绠$悊鐨勩€傛帴涓嬫潵鎴戜滑鐪嬬湅浠€涔堟槸JavaScript璋冪敤鏍堛€侸avaScript璋冪敤鏍堟垜浠煡閬擄紝鍦↗avaScript鎵ц杩囩▼涓紝鍐呭瓨绌洪棿涓昏鍒嗕负鏍堢┖闂村拰鍫嗙┖闂达紙浠g爜绌洪棿鏆備笖涓嶈皥锛夈€備粈涔堟槸JavaScript璋冪敤鍫嗘爤锛氬湪浠g爜鎵ц鏈熼棿锛孞avaScript寮曟搸浼氬皢鎵ц涓婁笅鏂囧帇鍏ュ爢鏍堢┖闂淬€傞€氬父锛岃繖涓敤鏉ョ鐞嗘墽琛屼笂涓嬫枃鐨勬爤绉颁负鎵ц涓婁笅鏂囨爤锛屼篃绉颁负璋冪敤鏍堛€傛帴涓嬫潵鎴戜滑涓€姝ユ鍒嗘瀽JavaScript璋冪敤鏍堝湪鎵ц濡備笅浠g爜杩囩▼涓殑鐘舵€佸彉鍖栵細vara=2functionadd(b,c){returnb+c}functionaddAll(b,c){vard=10result=add(b,c)returna+result+d}addAll(3,6)绗竴姝ユ槸鍒涘缓涓€涓叏灞€涓婁笅鏂囧苟灏嗗叾鍘嬪叆鏍堝簳銆傚涓嬪浘鎵€绀猴細浠庡浘涓繕鍙互鐪嬪嚭锛屽彉閲廰銆佸嚱鏁癮dd銆乤ddAll閮戒繚瀛樺湪鍏ㄥ眬鎵ц涓婁笅鏂囩殑鍙橀噺鐜瀵硅薄涓€傚叏灞€鎵ц涓婁笅鏂囪鍘嬪叆璋冪敤鏍堝悗锛孞avaScript寮曟搸寮€濮嬫墽琛屽叏灞€浠g爜銆傞鍏堜細鎵цa=2鐨勮祴鍊兼搷浣滐紝杩欐潯璇彞鐨勬墽琛屼細灏嗗叏灞€涓婁笅鏂囧彉閲忕幆澧冧腑a鐨勫€艰缃负2銆傝缃悗鐨勫叏灞€涓婁笅鏂囩姸鎬佸涓嬪浘鎵€绀猴細绗簩姝ユ槸璋冪敤addAll鍑芥暟銆傚綋鍑芥暟琚皟鐢ㄦ椂锛孞avaScript寮曟搸浼氬鍑芥暟杩涜缂栬瘧锛屼负鍑芥暟鍒涘缓鎵ц涓婁笅鏂囷紝鏈€鍚庡皢鍑芥暟鐨勬墽琛屼笂涓嬫枃鍘嬪叆鏍堜腑锛屽涓嬪浘鎵€绀猴細绗笁姝ワ紝add鍑芥暟璋冪敤鏃秙tatement琚墽琛屾椂锛屼篃浼氫负鍏跺垱寤轰竴涓墽琛屼笂涓嬫枃锛屽苟灏嗗叾鍘嬪叆璋冪敤鏍堬紝濡備笅鍥炬墍绀猴細褰揳dd鍑芥暟杩斿洖鏃讹紝璇ュ嚱鏁扮殑鎵ц涓婁笅鏂囧皢浠庢爤椤跺脊鍑猴紝骞朵笖result鐨勫€间細琚缃负add鍑芥暟鐨勮繑鍥炲€硷紝鍗?銆傚涓嬪浘鎵€绀猴細addAll鎵ц鏈€鍚庝竴娆″姞娉曡繍绠楄繑鍥炲悗锛宎ddAll鐨勬墽琛屼笂涓嬫枃涔熶細浠庨《閮ㄥ脊鍑哄爢鏍堛€傛鏃讹紝鍙湁鍏ㄥ眬涓婁笅鏂囦繚鐣欏湪璋冪敤鍫嗘爤涓€傛渶鍚庡涓嬪浘鎵€绀猴細鑷虫锛屾暣涓狫avaScript娴佺▼鎵ц瀹屾瘯銆傚ソ浜嗭紝鐜板湪浣犲簲璇ョ煡閬撹皟鐢ㄦ爤鏄疛avaScript寮曟搸璺熻釜鍑芥暟鎵ц鐨勪竴绉嶆満鍒躲€傚綋鍚屾椂璋冪敤澶氫釜鍑芥暟鏃讹紝鍙互閫氳繃璋冪敤鏍堣窡韪鍦ㄦ墽琛岀殑鏄摢涓嚱鏁帮紝浠ュ強鍚勪釜鍑芥暟涔嬮棿鐨勮皟鐢ㄥ叧绯汇€?璇村埌杩欓噷锛岀浉淇℃牴鎹笂闈㈢殑鍐呭锛屽ぇ瀹跺簲璇ュ凡缁忔槑鐧戒粈涔堟槸JavaScript鎵ц涓婁笅鏂囧拰璋冪敤鏍堜簡銆傛垜浠啀鏉ョ湅杩欎釜锛屽叾瀹炲畠涔熸槸瀛樻斁鍦ㄦ墽琛屼笂涓嬫枃涓殑銆傛墽琛屼笂涓嬫枃鍖呮嫭锛氬彉閲忕幆澧冦€佽瘝娉曠幆澧冦€佸閮ㄣ€乼his銆傚涓嬪浘鎵€绀猴細浠庡浘涓彲浠ョ湅鍑猴紝this鏄粦瀹氫簡鎵ц涓婁笅鏂囩殑锛屼篃灏辨槸璇存瘡涓€涓墽琛屼笂涓嬫枃閮芥湁涓€涓猼his鎵ц涓婁笅鏂囥€傚畠涓昏鍒嗕负涓変釜鍏ㄥ眬鎵ц涓婁笅鏂囥€傚嚱鏁版墽琛屼笂涓嬫枃eval鎵ц涓婁笅鏂嘢o瀵瑰簲鐨則his鍙槸杩欎笁涓叏灞€鎵ц涓婁笅鏂囦腑this鍑芥暟涓殑thiseval涓殑this锛堝厛涓嶈鏄庤繖绉嶆儏鍐碉級銆傚叏灞€鎵ц涓婁笅鏂囦腑鐨則his鍦ㄦ帶鍒跺彴涓緭鍏ャ€俢onsole.log(this)//windowconsole.log(this===window)//true鎴戜滑鍙互鐪嬪埌鍏ㄥ眬鎵ц涓婁笅鏂囦腑鐨則his涔熸寚鍚憌indow瀵硅薄銆倀his鍦ㄥ嚱鏁版墽琛屼笂涓嬫枃涓墽琛屽涓嬩唬鐮侊細functionfoo(){console.log(this)//window}foo()鍙互鐪嬪埌杈撳嚭浜唚indow锛岃鏄庨粯璁よ皟鐢ㄤ簡涓€涓嚱鏁帮紝this鍦ㄥ畠鐨勬墽琛屼腑context涔熸寚鍚憌indow瀵硅薄銆傚彲浠ヨ涓篔avaScript寮曟搸鍦ㄦ墽琛宖oo()鐨勬椂鍊欙紝灏嗗叾杞寲涓猴細杩欏彲浠ラ€氳繃璋冪敤鏉ユ敼鍙樸€備笅闈㈠垪涓句竴涓嬪湪鍑芥暟鎵ц涓婁笅鏂囦腑璁剧疆杩欎釜鍊肩殑鏂规硶锛?.閫氳繃鍑芥暟鐨刢all銆乤pply銆乥ind鏂规硶璁剧疆usage濡備笅锛歭etbar={myName:"dell",}functionfoo(){this.myName="dellyoung"}foo.call(bar)console.log(bar)//{myName:"dellyoung"}console.log(myName)//閿欒myNameisnotdefined鎵ц涓婇潰鐨勪唬鐮侊紝瀹冧細鎵撳嵃out{myName:"dellyoung"}andmyNameundefined閿欒淇℃伅锛屾樉鐒跺湪鎵цfoo()鏃讹紝瀹冪殑this鐐规垚鍔熸寚鍚戜簡bar锛屾鏃禸ar灏辨槸foo()鐨則his2銆傚皾璇曢€氳繃璁剧疆瀵硅薄璋冪敤鏂规硶varmyObj={name:"delyoung",showThis:function(){console.log(this)}}myObj.showThis()鎵撳嵃鍑簕name:'delyoung',showThis:[Function:showThis]}锛屾樉鐒剁幇鍦╰his鎸囧悜CallitmyObj銆傚彲浠ュ緱鍑虹粨璁猴紝浣跨敤涓€涓璞¤皟鐢ㄥ畠鍐呴儴鐨勪竴涓柟娉曪紝杩欎釜鏂规硶鐨則his鎸囧悜瀵硅薄鏈韩銆傚彲浠ヨ涓篔avaScript寮曟搸鍦ㄦ墽琛宮yObject.showThis()鏃讹紝灏嗗叾杞寲涓猴細myObj.showThis.call(myObj)3.鏍规嵁浠ヤ笂涓ょ偣锛屽緱鍑轰竴涓皬缁撹銆傚湪鍏ㄥ眬鐜涓皟鐢ㄤ竴涓嚱鏁帮紝鍑芥暟閲岄潰鐨則his鎸囧悜鐨勬槸鍏ㄥ眬鍙橀噺window銆傞€氳繃瀵硅薄璋冪敤瀹冨唴閮ㄧ殑鏂规硶锛屾柟娉曟墽琛屼笂涓嬫枃涓殑this鎸囧悜瀵硅薄鏈韩銆傝皝璋冪敤鍑芥暟锛屽嚱鏁扮殑this鎸囧悜璋併€傚璞¤皟鐢ㄥ嚱鏁板氨涓嶇敤璇翠簡銆傚叏灞€鐜璋冪敤涔熷彲浠ョ悊瑙d负window璋冪敤锛屽綋鐒舵寚鍚憌indow4銆傞€氳繃鏋勯€犲嚱鏁颁腑鐨勮缃紝鎴戜滑鏉ョ湅鐪嬬敤new璋冪敤鏋勯€犲嚱鏁板仛浜嗕粈涔堬細functionpolyNew(source,...arg){//鍒涘缓涓€涓┖鐨勭畝鍗旿avaScript瀵硅薄锛堝嵆{}锛塴etnewObj={};//灏嗘瀵硅薄锛堝嵆璁剧疆瀵硅薄鐨勬瀯閫犲嚱鏁帮級閾炬帴鍒板彟涓€涓璞bject.setPrototypeOf(newObj,source.prototype);//浣跨敤姝ラ1涓柊鍒涘缓鐨勫璞′綔涓簍his鐨勪笂涓嬫枃锛沜onstresp=source.apply(newObj,arg);//鍒ゆ柇鍑芥暟鐨勮繑鍥炲€兼槸鍚︿负瀵硅薄if(Object.prototype.toString.call(resp)==="[objectObject]"){//濡傛灉鍑芥暟娌℃湁杩斿洖瀵硅薄锛屽垯杩斿洖this銆俽eturnresp}else{//濡傛灉鍑芥暟杩斿洖涓€涓璞★紝鍒欎娇鐢ㄨ繑鍥炵殑瀵硅薄浣滀负杩斿洖鍊笺€俽eturnnewObj}}寰堟槑鏄炬垜浠湅鍒颁簡source.apply(newObj,arg)锛屾墍浠ユ瀯閫犲嚱鏁板疄闄呬笂鏀瑰彉浜唗his鐨勬寚鍚戯紝灏唗his鐨勬寚鍚戜粠鍘熸潵鐨勫嚱鏁板彉鎴愪簡鏂版瀯閫犵殑鍑芥暟銆傝繖鏄瓨鍌ㄥ湪鍝噷锛熻繖瀛樺偍鍦ㄦ瘡涓墽琛屼笂涓嬫枃涓€傚畠鏄浣曞嚭鐜扮殑锛屽張鏄浣曟秷澶辩殑锛熻繖涓槸鍜屾墽琛屼笂涓嬫枃涓€璧峰嚭鐜扮殑锛屽綋鎵ц涓婁笅鏂囪鍥炴敹鏃讹紝瀹冧篃浼氭秷澶便€傝繖鏄粈涔堝姛鑳斤紵鍦ㄥ叏灞€鎵ц涓婁笅鏂囦腑锛歵his鎸囧悜window瀵硅薄锛屾柟渚挎垜浠皟鐢ㄥ叏灞€window瀵硅薄銆傚湪鍑芥暟鎵ц涓婁笅鏂囦腑锛歵his鎸囧悜璋冪敤鍑芥暟鐨勫璞★紝鍑忓皯浜嗗弬鏁扮殑浼犻€掋€傚鏋滈渶瑕佸湪鍑芥暟鍐呴儴瀵硅璋冪敤瀵硅薄杩涜鎿嶄綔锛屽綋鐒堕渶瑕佸皢瀵硅薄浣滀负鍙傛暟浼犻€掞紝浣嗘槸鏈変簡this灏变笉闇€瑕佷簡锛岀洿鎺ヤ娇鐢╰his灏卞彲浠ュ琚皟鐢ㄥ璞$殑灞炴€ц繘琛屾搷浣溿€備粈涔堟槸璋冪敤銆佸簲鐢ㄥ拰缁戝畾锛焎all鍦ㄤ笂闈㈠凡缁忕敤浜嗗緢澶氭浜嗭紝鎯冲繀澶у閮芥槑鐧絚all鏄共浠€涔堢殑锛歁DN:call()鏂规硶浣跨敤涓€涓寚瀹氱殑this鍊煎拰涓€涓垨澶氫釜鍗曠嫭缁欏畾鐨勫弬鏁版潵璋冪敤涓€涓嚱鏁般€備緥濡傦細letbar={myName:"dellyoung",}functionfoo(){console.log(this.myName)}foo.call(bar)//鎵撳嵃鍑篸ellyoung鍗筹細璋冪敤foo鍑芥暟鏃讹紝閫氳繃浣跨敤call()浼犲叆bar锛宖oo鍑芥暟鍐呴儴鐨則his鎸囧悜bar瀹炵幇璋冪敤銆傛垜浠牴鎹繖涓粨璁烘潵瀹炵幇璋冪敤锛欶unction.prototype.dellCall=function(context=window,...param){//鍒ゆ柇鏄皟鐢╟all鏂规硶鐨勫嚱鏁癷f(typeofthis!=='function'){returnnewTypeError("绫诲瀷閿欒");}//灏唗his锛屼篃灏辨槸琚皟鐢ㄥ嚱鏁拌祴鍊肩粰浼犲叆瀵硅薄锛岃揪鍒颁紶鍏ュ璞℃坊鍔犺璋冪敤鍑芥暟鐨勭洰鐨刢ontext.fun=this;//浣跨敤浼犲叆鐨勫璞¤皟鐢ㄨ璋冪敤鐨勫嚱鏁帮紝骞朵繚鐣欒繑鍥炵粨鏋渃onstresp=context.fun(...param);//鍒犻櫎浼犲叆瀵硅薄涓婃坊鍔犵殑鍑芥暟锛岄槻姝㈠唴瀛樻硠婕廟eflect.deleteProperty(context,'fun');//杩斿洖缁撴灉returnresp;};鍏跺疄鏍稿績寰堢畝鍗曪紝鎴戜滑鏉ュ垎鏋愪竴涓嬶細灏嗚璋冪敤鐨勫嚱鏁颁綔涓哄睘鎬ф坊鍔犲埌浼犲叆瀵硅薄涓紝杩欐牱灏卞彲浠ュ湪浼犲叆瀵硅薄涓婂疄鐜颁簡銆傚垎鏋愬畬闇€瑕佽皟鐢ㄧ殑鍑芥暟锛屾垜浠彂鐜版牳蹇冨師鍒欐槸锛氳皝璋冪敤鍑芥暟锛屽嚱鏁扮殑this鎸囧悜璋佹槸瀵嗕笉鍙垎鐨勩€傚師鍥狅細璋佽皟鐢ㄤ簡鍑芥暟锛屽嚱鏁扮殑this鎸囧悜浜嗚皝銆傝繖鍙ヨ瘽鍏跺疄鍙互甯姪鎴戜滑鐞嗚Вthis鐨勫ぇ閮ㄥ垎闂銆俛pplyapply鐨勫疄鐜板叾瀹炲拰call绫讳技锛屽彧鏄紶閫掑弬鏁扮殑鏂瑰紡涓嶅悓锛歠oo.call(obj,[param1,param2,...,paramN])//鍙傛暟鏄竴涓暟缁勶紝浼犻€掔殑鏄竴涓暟缁刬nasaparameterfoo.apply(obj,param1,param2,...,paramN)//鍙傛暟涓嶆槸鏁扮粍锛屽彲浠ヤ紶涓€涓插弬鏁般€傛垜浠妸涓婇潰鐨勮皟鐢ㄤ慨鏀逛负apply锛欶unction.prototype.dellApply=function(context=window,param=[]){//鍒ゆ柇鏄嚱鏁拌皟鐢╟all鏂规硶if(typeofthis!=='function'){returnnewTypeError("绫诲瀷閿欒");}//鍦ㄤ紶鍏ュ璞′笂娣诲姞瑕佽皟鐢ㄧ殑鍑芥暟浣滀负灞炴€ontext.fun=this;//鍦ㄤ紶鍏ョ殑瀵硅薄涓婏紝璋冪敤闇€瑕佽皟鐢ㄧ殑鍑芥暟constresp=context.fun(...param);//鍒犻櫎浼犲叆瀵硅薄涓婃坊鍔犵殑鍑芥暟锛岄槻姝㈠唴瀛樻硠婕廟eflect.deleteProperty(context,'fun');//杩斿洖缁撴灉returnresp;}瀹炵幇bindbind鐨勭洰鐨勬槸涓€鏍风殑锛屾敼鍙榯his锛屼絾涓嶆槸鐩存帴璋冪敤鍑芥暟锛岃€屾槸杩斿洖鏀瑰彉鍐呴儴this鍊肩殑鍑芥暟锛岄渶瑕佺殑鏃跺€欏啀璋冪敤锛氭垜浠潵瀹炵幇鍚?Function.prototype.dellBind=function(context){//鍙湁鍒ゆ柇涓哄嚱鏁版墠鑳借皟鐢╟all鏂规硶if(typeofthis!=='function'){returnnewTypeError("typeerror")}//浣跨敤閭d釜鍙橀噺鏉ヤ繚瀛樿璋冪敤鐨勫嚱鏁癱onstthat=this;//淇濆瓨浼犲叆鐨勫弬鏁癱onstargArr=[...arguments];//杩斿洖涓€涓嚱鏁帮紝杩欐牱杩斿洖鐨勫嚱鏁板氨浼氳璋冪敤锛屽唴閮ㄧ殑that.call()鍑芥暟灏变細琚墽琛宺eturnfunctionF(){//浣跨敤call鏀瑰彉琚皟鐢ㄥ嚱鏁扮殑鍐呴儴this鐐箁eturnthat.call(context,[...argArr,...arguments]);}}涓嬮潰鏉ュ垎鏋愪竴涓媌ind锛氬叾瀹瀊ind鍜宎pply鍙槸涓€鐐圭偣鍖哄埆锛宐ind杩斿洖鐨勬槸鍐呴儴this鐐硅鏀瑰彉鐨勫嚱鏁般€傝皟鐢ㄨ繑鍥炲嚱鏁版椂锛屽皢鍐呴儴this鎸囧悜鐨勫嚱鏁版敼涓簉un锛岃繍琛屽悗寰堝鏄撹繑鍥炵粨鏋溿€俠indreturn涓嶅啀鍍廲all閭f牱杩斿洖缁撴灉锛岃€屾槸杩斿洖涓€涓嚱鏁帮紝璋冪敤杩斿洖鐨勫嚱鏁板綋鐒跺彲浠ヨ繍琛屽唴閮ㄧ偣琚玹his鏀瑰彉鐨勫嚱鏁般€備紭鍖栵細涓ユ牸鏉ヨ杩欎笉鏄竴涓悎鏍肩殑bind锛屽洜涓哄畠杩橀渶瑕佽€冭檻灏嗗嚱鏁颁綔涓烘瀯閫犲嚱鏁拌皟鐢ㄨ繖绉嶆儏鍐典笅锛屼娇鐢╪ew浣滀负鏋勯€犲嚱鏁拌皟鐢ㄥ嚱鏁版椂锛屼笉瑕佹敼鍙榯his鐨勭偣锛屽彧杩斿洖鐢╪ew璋冪敤鍑芥暟銆備唬鐮佸涓嬶細Function.prototype.dellBind=function(context){//鍒ゆ柇鏄嚱鏁板彲浠ヨ皟鐢╟all鏂规硶if(typeofthis!=='function'){returnnewTypeError("typeerror")}//浣跨敤閭d釜鍙橀噺鏉ヤ繚瀛樿璋冪敤鐨勫嚱鏁癱onstthat=this;//淇濆瓨浼犲叆鐨勫弬鏁癱onstargArr=[...arguments];//杩斿洖涓€涓嚱鏁皉eturnfunctionF(){//濡傛灉浣跨敤new锛屽垯浣跨敤鏋勯€犲嚱鏁癷f(thisinstanceofF){returnnewthat(...argArr,...arguments);}//浣跨敤call鏀瑰彉琚皟鐢ㄥ嚱鏁扮殑鍐呴儴this鐐箁eturnthat.apply(context,[...argArr,...arguments]);}}鍒嗘瀽锛氶€氳繃instanceof鍒嗘瀽鍙互寰楀埌锛岃繖涓槸涓嶆槸F閫氳繃new寰楀埌鐨勶紝new閲岄潰宸茬粡璇翠簡锛宯ew鎿嶄綔閲岄潰浼氭浛鎹㈠師鍨嬮摼锛欰.__proto__===B銆俻rototype閭d箞濡傛灉F鐨勫師鍨嬪湪this鐨勫師鍨嬮摼涓婏紝閭d箞褰撶劧鏄敤new浣滀负鏋勯€犲嚱鏁拌皟鐢紝鎴戜滑涔熷簲璇ヨ繑鍥瀗ew鍑芥暟銆傜湅瀹屼袱浠朵簨锛屾杩庡姞鎴戝井淇★紙iamyyymmm锛夛紝鎷変綘杩涙妧鏈兢锛屼氦娴佸涔犲崐澶╋紝鍏虫敞鍏紬鍙封€滃ぉ楣呭疄楠屽鈥濓紝璺烡ull瀛﹀墠绔箙锛屾彁楂樻妧鏈煡璇嗮煂堢粰鎴戠偣涓禐锛屾敮鎸佹垜馃寛