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

原型链,构造函数链!我终于明白原型、__proto__和构造函数了!

时间:2023-03-27 16:21:31 JavaScript

鏀句袱涓摼鎺ワ紝寮虹儓鎺ㄨ崘闃呰锛氱涓€绡囷細JavaScript鍘熷瀷鏈川#涓€绡囧氨澶熶簡绯诲垪浜岋細鐢ㄨ嚜宸辩殑鏂瑰紡锛堝浘鐗囷級鐞嗚В鏋勯€犲嚱鏁般€佸師鍨嬨€乢_proto__鍜屽師鍨嬮摼鍦ㄧ涓€绡囦腑杩囩▼涓紝鎴戠煡閬撲簡涓轰粈涔堟垜涓€鐩寸湅涓嶆噦鍚勭澶х鐨勫師鍨嬪浘銆傛垜鐭ラ亾搴旇鍒嗕负涓ら儴鍒嗭細鍘熷瀷閾惧拰鏋勯€犲嚱鏁伴摼銆傜浜岀瘒鏂囩珷璁╂垜褰诲簳鐞嗚В浜嗕粈涔堟槸鏋勯€犲嚱鏁伴摼锛屼粈涔堟槸鍘熷瀷閾俱€備笅闈㈣涓€涓嬫垜鐞嗚В鐨勫師鍨嬮摼锛岀湅鐪嬫湁浠€涔堟敹鑾枫€傚鏋滃澶у鏈夊府鍔╅偅灏卞お濂戒簡锛佺涓€娆′笁涓睘鎬х殑鏋勯€犲嚱鏁板€熺敤绗簩绡囨枃绔犵殑椤哄簭锛屽厛浠庢瀯閫犲嚱鏁拌璧枫€傝繖涓瘝鍦ㄤ笉鍚岀殑璇涓湁涓嶅悓鐨勬寚浠f剰涔夈€備綔涓哄悕璇嶏紝瀹冨彲浠ユ寚浠e嚱鏁扮被鍨嬧€滄瀯閫犲嚱鏁扳€濄€傚湪鍘熷瀷閾剧殑鍦烘櫙涓紝瀹冧綔涓哄璞$殑灞炴€у悕鍑虹幇銆侰onstructorconstrutor璋锋瓕缈昏瘧涓烘瀯閫犲嚱鏁帮紝鎵€浠ュ湪鏌愪簺鍦烘櫙涓嬶紝浠栨寚鐨勬槸鏋勯€犲嚱鏁般€傚湪ES6瑙勮寖涓紝鏋勯€犲嚱鏁版槸杩欐牱鎻忚堪鐨勶細4.3.4constructorfunctionobjectthatcreatesandinitializesobjects缈昏瘧锛歵hefunctionobjectthatcreatesandinitializesobjects杩欓噷鐨刢onstructor鏄寚鏋勯€犲嚱鏁般€傚璞$殑灞炴€ф瀯閫犲嚱鏁颁篃鏄璞$殑灞炴€с€傜浉淇″ぇ瀹舵兂鐭ラ亾鐨勫苟涓嶆槸鏋勯€犲嚱鏁扮浉鍏筹紝鏇村鐨勬槸鎯冲紕娓呮鏋勯€犲嚱鏁颁綔涓哄璞″睘鎬ф槸浠€涔堛€傚璞$殑灞炴€э紵渚嬪锛屽浜庝竴涓嚱鏁板璞un锛屾垜浠彲浠ュ湪瀹冪殑灞炴€т腑鎵惧埌鑷冲皯涓変釜鏋勯€犲嚱鏁扮浉鍏崇殑灞炴€э細letFun=function(){this.a='a'}Fun.constructor//茠Function(){[nativecode]}Fun.__proto__.constructor//茠Function(){[nativecode]}Fun.prototype.constructor//茠茠(){this.a='a'}letafun=newFunafun.constructor//茠(){this.a='a'}afun.__proto__.constructor//茠(){this.a='a'}涓嶅繀鐭ラ亾瀹冧滑鍋氫粈涔堬紝涓轰粈涔堣緭鍑哄畠浠紝浠ュ強__proto_浠€涔坃鍜宲rototype鏄粈涔堬紝鍚庨潰鍐嶈锛岀幇鍦ㄦ垜浠彧闇€瑕佹槑鐧絚onstructor浼氬嚭鐜板湪杩欎笁涓湴鏂广€傛瀯閫犲嚱鏁板仛浠€涔堬紵浠庝粬鐨勭洿璇戜篃鍙互鐪嬪嚭锛岃繖涓睘鎬ф槸鍜宑onstructor鐩稿叧鐨勶紝浣跨敤constructor浣滀负瀵硅薄鐨勫睘鎬у悕锛岀洰鐨勬槸鎸囧悜瀵硅薄鐨勬瀯閫犲嚱鏁帮紝鎵€浠un.constructor鎸囧悜fun鐨勬瀯閫犲嚱鏁?JSbuilt-inobjectFunction:茠Function(){[nativecode]}prototype鎴戜滑鐪嬩竴涓嬭鑼冧腑prototype鐨勫畾涔夛紙鐪嬩笉鎳傛病鍏崇郴锛屽悗闈㈠啀璇达級:4.3.5prototypeobjectthatprovidessharedpropertiesforotherobjectsNOTE褰撴瀯閫犲嚱鏁板垱寤轰竴涓璞℃椂锛岃瀵硅薄闅愬紡寮曠敤鏋勯€犲嚱鏁扮殑鍘熷瀷灞炴€т互瑙f瀽灞炴€у紩鐢ㄣ€傜炕璇戯細Objectsthatprovidesharedpropertiesforotherobjects娉細鏋勯€犲嚱鏁板垱寤哄璞℃椂锛屽璞′細闅愬紡寮曠敤鏋勯€犲嚱鏁扮殑prototype灞炴€т腑鐨勫睘鎬э紝涓轰簡鏂逛究鍒嗘瀽灞炴€у紩鐢紝鍏堣鏄庝竴涓嬶細绗竴浠朵簨瑕佺煡閬撶殑鏄痐prototype`鍙瓨鍦ㄤ簬鍑芥暟瀵硅薄涓€傛垜浠笅闈㈣鐨刐`prototype`]锛屽氨鏄寚[鏋勯€犲嚱鏁扮殑`prototype`灞炴€с€戙€傚厛鐪嬬涓€鍙ヨ瘽锛歱rototype鏄竴涓负鍏朵粬瀵硅薄鎻愪緵鍏变韩灞炴€х殑瀵硅薄銆傚師鍨嬫槸涓€涓璞°€傝繖鍙ヨ瘽鐪佺暐浜嗗畾璇紝鍓╀笅鐨勫氨鏄細銆恜rototypeisanobject銆戙€備竴涓璞″瓨鍌ㄥ湪鍘熷瀷灞炴€т腑锛屾垨鑰呭師鍨嬪睘鎬ф槸涓€涓璞°€傚璞′腑鏈夎澶氬睘鎬с€傚舰寮忓ぇ鑷寸被浼艰繖鏍凤紙褰撶劧涓嶆槸鍐呭锛岃繖閲屽彧鏄妇渚嬶級锛欶un.prototype={a:function(){console.log('a')},//瀛樺偍鏂规硶b:function(){console.log('b')},c:'c'//Storespecificvalues...}杩欏彞璇濅腑鐨勩€愬叾浠栧璞°€戞槸浠€涔堬細鏋勯€犲嚱鏁癋un鍒涘缓鐨勫璞★紝姣斿letobj1=newFunnewFun涓璅un鐨勫疄渚媜bj1灏辨槸this[otherobject]銆傛彁渚涘叡浜睘鎬ф€庝箞鏍凤紵瀹炰緥obj1鍙互閫氳繃newFun鍒涘缓锛宱bj2,obj3...涔熷彲浠ヨ嚜鐒跺垱寤恒€傝繖鏄竴涓檲璇嶆互璋冪殑闂銆傜湅鐪嬭繖涓満鏅細functionFun(name){this.name=name;this.sayHi=function(){console.log('hi锝瀒am'+this.name)}}letobj1=newFun('obj1Name')letobj2=newFun('obj2Name')letobj3=newFun('obj3Name')iffollow涓婇潰鐨勬柟娉曚负姣忎釜瀹炰緥娣诲姞浜嗕竴涓猲ame灞炴€э紝鎵€浠ユ瘡娆″垱寤轰竴涓疄渚嬶紝閮戒細鍒涘缓涓€涓猻ayHi鏂规硶銆備笂闈㈠垱寤轰簡涓変釜Fun瀹炰緥锛屾瘡涓疄渚嬪垱寤轰竴涓唴瀛樼┖闂存潵淇濆瓨sayHi锛屼竴鍏变笁涓€傝繖鍙槸涓変釜瀹炰緥锛屾垜浠垱寤轰簡瀹冧滑锛屼絾鏄鏋滄湁鏁扮櫨涓垨鏁板崈涓疄渚嬫€庝箞鍔烇紵杩欎細鍗犵敤澶ч噺鍐呭瓨銆傛€庝箞璇村憿锛屽張娌″繀瑕佸張璐瑰姏銆傚浣曚紭鍖栧憿锛熸垜浠敞鎰忓埌杩欎笁涓疄渚嬬殑鏋勯€犲嚱鏁伴兘鏄疐un锛岄偅涔堟湁娌℃湁鍔炴硶鍦‵un涓婂垱寤轰竴涓唴瀛樼┖闂存潵淇濆瓨sayHi锛岀劧鍚庝负鍏跺疄渚嬭皟鐢ㄥ憿锛熸棦鐒堕棶浜嗚繖涓棶棰橈紝褰撶劧鏄湁鍔炴硶鐨勩€傝繖鏃跺€欙紝鍘熷瀷鏈哄氨瑕佺櫥鍦轰簡锛佹垜浠凡缁忕煡閬撳師鍨嬪璞′腑淇濆瓨浜嗕竴浜涘睘鎬у拰鏂规硶銆傜涓€姝ワ紝鎴戜滑鍙互灏唖ayHi鏂规硶淇濆瓨鍦‵un.prototype涓€傜浜屾鏄垱寤哄疄渚嬨€備唬鐮佸涓嬶細//鍒濆鍖朏unfunctionFun(name){this.name=name;}//灏嗘柟娉曚繚瀛樺湪Fun鍘熷瀷瀵硅薄涓璅un.prototype.sayHi=function(){console.log('hi锝瀒am'+this.name)}//鍒涘缓瀹炰緥letobj1=newFun('obj1Name')letobj2=newFun('obj2Name')letobj3=newFun('obj3Name')鍦‵un.prototype涓繚瀛榮ayHi锛岀劧鍚庡彧鏈塻ayHi鏂规硶鍦ㄥ唴瀛樹腑鍒涘缓浜嗕竴娆★紝浣嗘槸璇ユ柟娉曟槸鍦‵un.prototype涓婂垱寤虹殑锛屽疄渚嬪簲璇ュ浣曡皟鐢ㄥ畠锛熸槸涓嶆槸搴旇鏈変竴涓睘鎬ф潵淇濆瓨Fun.prototype鐨勫湴鍧€锛堜繚瀛楩un.prototype鐨勫紩鐢級锛熻繕鏄偅鍙ヨ瘽锛屾垜杩欐牱闂繃锛屽綋鐒惰锛屼笉鐒舵壘涓嶅埌Fun.prototype锛屾€庝箞鎵綟un.prototype涓繚瀛樼殑sayHi鏂规硶銆俒A灞炴€浠€涔堟槸灞炴€э紵杩欓噷锛屽厛璇翠竴涓婲OTE鐨勫唴瀹规敞鎰忥細褰撴瀯閫犲嚱鏁板垱寤哄璞℃椂锛屽璞′細闅愬紡寮曠敤鏋勯€犲嚱鏁扮殑prototype灞炴€т腑鐨勫睘鎬э紝杩欐牱鍦ㄦ瀯閫犲嚱鏁扮殑鏃跺€欏氨鍙互瑙f瀽瀵瑰睘鎬х殑寮曠敤浜嗗垱寤哄疄渚嬪璞bj1锛宱bj1涓細鏈変竴涓睘鎬ф寚鍚慒un.prototype锛宱bj1涔熷彲浠ヨ皟鐢‵un.prototype涓繚瀛樼殑灞炴€у拰鏂规硶銆備负浠€涔堟槸闅愬惈鐨勶紵鍥犱负obj1涓寚鍚慒un.prototype鐨勫睘鎬у簲璇ユ槸寮€鍙戣€呰幏鍙栦笉鍒扮殑锛屽湪瑙勮寖涓簲璇ユ槸鍐呴儴瀹炵幇鐨勫睘鎬э紝浣嗘槸宸у悎鐨勬槸鎵€鏈夌殑娴忚鍣ㄩ兘瀹炵幇浜嗚繖涓睘鎬э紝鎴戜滑鏄彲浠ヨ幏鍙栧埌鐨勩€傚畠鏄痏_proto__銆傚叧浜庝粈涔圼__proto__]鍜孾prototype]缈昏瘧鎴愪腑鏂囷紝鍙兘澶у闅忎究涔辫锛屽苟娌℃湁涓€涓粺涓€鐨勬爣鍑嗘潵绉板懠銆傛湁寰堝璇存硶锛歔__proto__]绉颁负[闅愬紡鍘熷瀷]锛孾鍘熷瀷]绉颁负[鍘熷瀷瀵硅薄]obj1.__proto__===Fun.prototype锛屽嵆obj1涓殣寮忓師鍨嬪睘鎬ф寚鍚戝叾鏋勯€犲嚱鏁癋un鐨勫師鍨嬬洰鐨勩€傜湅鍒拌繖閲屾槸涓嶆槸鏈夌偣鐪肩啛锛岃繖涓猒_proto__灏辨槸鎴戜滑涓婇潰鎻愬埌鐨勬寚鍚慒un.prototype鐨勨€滀竴涓睘鎬р€濓紒鏃㈢劧濡傛锛屼笂鍥剧◢寰慨鏀逛竴涓嬶細__proto__鐪嬪埌杩欓噷锛屼綘搴旇瀵逛粈涔堟槸obj.__proto__鏈夋墍浜嗚В浜嗭細鍙傝€冿級鍙互杩欎箞璇达紝鍏充簬杩欎釜灞炴€э紝浣嗘病鏈変粈涔堝彲璇寸殑銆侰onstructoradvanced璇存槸杩涢樁锛屼篃鍙互鍙ˉ鍏呫€備互涓婂彧鏄杩欎笁涓睘鎬ф槸浠€涔堢殑瑙i噴銆傚叧浜庡師鍨嬮摼锛屽叧浜庢瀯閫犲嚱鏁伴摼锛屽叧浜庡師鍨嬪璞$殑鏋勯€犲嚱鏁帮紝闅愬紡鍘熷瀷鐨勬瀯閫犲嚱鏁扮瓑绛夊氨涓嶈浜嗐€備絾鍒媴蹇冿紝鎴戜滑浼氬埌姝や负姝€俧un鐨勬瀯閫犲嚱鏁扮湡鐨勬槸涓€涓瀯閫犲嚱鏁板睘鎬у悧锛熷弬鑰冭嚜锛氬弬鑰冮摼鎺?绗?鏉°€?#4.鐪熸鐨勬瀯閫犲嚱鏁板睘鎬ч殣钘忓湪鍝噷銆戝厛鏉ョ湅涓€涓被浼兼垜浠笂闈㈡彁鍒扮殑sayHi鐨勯棶棰橈細functionFun(name){this.name=name;this.sayHi=...this.constructor=function(){returnFun};}letobj1=newFun('obj1Name')...姣曠珶鏋勯€犲嚱鏁颁篃鏄璞$殑涓€涓€嬧€嬪睘鎬э紝瀛樺偍浜嗘柟娉曡繑鍥炲畠鐨勬瀯閫犲嚱鏁帮紝澶ц嚧鍐呭鍙兘鍜屼笂闈㈠啓鐨勫樊涓嶅銆傚鏋滃湪鍒涘缓姣忎釜瀹炰緥鐨勬椂鍊欓兘閲嶆柊鍒涘缓鏋勯€犲嚱鏁帮紝杩樻槸浼氬拰涓€寮€濮媠ayHi鐨勯棶棰樹竴鏍凤細鍗犵敤鍐呭瓨锛佷笉闇€瑕侊紒杈涜嫤浜嗭紒閭f垜浠鎬庝箞鍔炲憿锛焥ayHi鏄€庝箞瑙e喅鐨勶紵鏀惧湪鏋勯€犲嚱鏁扮殑鍘熷瀷瀵硅薄prototype涓紒//鍒濆鍖朏unfunctionFun(name){this.name=name;}//灏嗘柟娉曚繚瀛樺湪Fun鍘熷瀷瀵硅薄涓璅un.prototype.sayHi=...Fun.prototype.constructor=function(){returnFun};//鍒涘缓涓€涓疄渚媗etobj1=newFun('obj1Name')...閭d箞obj1.constructor鏄粈涔堬紵鎴戣寰楀拰obj1.__proto__绫讳技锛屼篃鏄繚瀛樺湴鍧€锛堝紩鐢級锛屼絾鏄痮bj1.constructor淇濆瓨鐨勫紩鐢ㄦ槸Fun.prototype.constructor鐨勫湴鍧€锛堝紩鐢級锛丗un.prototype.__proto__.constructorprototype鏄竴涓璞★紝瀵瑰惂锛熶笉鍙惁璁わ紝瀵硅薄鏈変竴涓殣鍚殑鍘熷瀷__proto__銆傚ソ浜嗭紝閭d箞闂鏉ヤ簡锛孎un.prototype.__proto__.constructor杈撳嚭鐨勬槸浠€涔堬紵鍒潃鎬ワ紝鎴戜滑绋嶅井鍒嗘瀽涓€涓嬨€侳un.prototype鏄竴涓璞★紝鎴戜滑鎶婂畠鐪嬫垚涓€涓暣浣擄細PrototypeFun锛屽嵆锛氳FunPrototype=Fun.prototype锛岄偅涔堥棶棰樺氨鍙樻垚浜咶unPrototype.__proto__.constructor杈撳嚭浠€涔堬紵鎯虫兂鎴戜笂闈㈣鐨勶細obj.__proto__淇濆瓨obj鏋勯€犲嚱鏁扮殑鍘熷瀷灞炴€э紙鍘熷瀷瀵硅薄锛夌殑鍦板潃锛堝紩鐢級鎴戞壘鍒颁簡FunPrototype鐨勬瀯閫犲嚱鏁帮紝涓棿涓柇浜嗭細鍘熷瀷瀵硅薄鈥減rototype鈥濈殑鏋勯€犲嚱鏁板師鍨媜fAugust18Fun鏄疛S鍐呯疆鐨勫師鍨嬪璞°€傚熀纭€鍦ㄨ繖閲岋細琛?鐪嬩竴涓猵rototype鐩稿叧鐨勮鑼冿紙缈昏瘧鍙互鐣ヨ繃锛屾湁鐐规櫐娑╋紝鍚庨潰鎴戜細缈昏瘧鎴愭垚浜鸿瑷€锛夛細17ECMAScriptStandardBuilt-inObjects闄ら潪鍙︽湁璇存槑姣忎竴涓唴缃畃rototype瀵硅薄鏈塐bject鍘熷瀷瀵硅薄锛屽嵆琛ㄨ揪寮廜bject.prototype(19.1.3)鐨勫垵濮嬪€硷紝浣滀负鍏禰[Prototype]]鍐呴儴妲界殑鍊硷紝闄や簡Object鍘熷瀷瀵硅薄鏈韩銆侽bject.prototype(19.1.3)鐨勫垵濮嬪€间綔涓哄叾[[Prototype]]鍐呴儴妲界殑鍊硷紝闄や簡Object鍘熷瀷瀵硅薄鏈韩銆備粈涔堢炕璇戞垚鎴愪汉璇濓紵姣忎釜鍘熷瀷瀵硅薄閮芥湁锛堜繚瀛橈級涓€涓師鍨嬪璞♀€減rototype鈥濈殑Object銆傝繖涓師鍨嬪璞$殑鍒濆鍊煎氨鏄疧bject.prototype鐨勫€硷紙鐪熸槸鍟板棪锛夛紝閭d箞杩欎釜鍘熷瀷瀵硅薄淇濆瓨鍦ㄥ摢閲屽憿锛熷瓨鍌ㄥ湪[[Prototype]]锛堜篃灏辨槸__proto__锛夌炕璇戞垚鎴愪汉鐨勮瘽锛歛nyprototypeobjectfun.prototype.__proto__===Object.prototypeok馃憣锛岃瘽棰樺洖鍒癋un.prototype.__proto__.constructor鍥犱负anyprototypeobject鐨勬墍鏈夌殑闅愬紡鍘熷瀷閮芥寚鍚慜bject.prototype锛岄偅涔團unPrototype.__proto__===Object.prototype灏辨垚绔嬩簡锛丗unPrototype.__proto__.constructor杩斿洖浠€涔堬紵杩斿洖FunPrototype鐨勬瀯閫犲嚱鏁帮紒瀹冪殑鏋勯€犲嚱鏁版槸浠€涔堬紵鏄唴缃璞bject锛佷负浠€涔堬紵涓€寮€濮嬫垜浠氨鐭ラ亾prototype鏄竴涓璞★紝鑰孎un.prototype鑷劧鏄竴涓璞★紙搴熻瘽锛塐bject鑷劧鏄敱Object鍒涘缓鐨勩€傛瀯閫犲嚱鏁伴摼鏋勯€犲嚱鏁伴摼鐨勬湯绔槸Function鏋勯€犲嚱鏁伴摼鐨勫簳灞傞€昏緫鏄細instance.__proto__===instanceconstructor.prototype鍏朵腑锛屼笅鍥句腑obj2鏄竴涓紙Fun鐨勶級瀹炰緥锛孎un鏄竴涓猻tructure(ofobj2)Function锛孎un鏄?Function)鐨勫疄渚嬶紝鑰孎unction鏄?ofFun)鐨勬瀯閫犲嚱鏁般€傛垜浠彲浠ョ湅鍒版湁涓ゆ潯鏋勯€犲嚱鏁伴摼锛氫竴鏉℃槸锛歰bj2-Fun-Function涓€鏉℃槸锛欶unction-Function濡傛灉瑕侀棶涓轰粈涔堟槸Function-Function锛屽彧鑳借鏄竴鏉¤鍒欍€傚湪璁捐涔嬪垵锛屼竴瀹氳鑳藉璺冲嚭鏋勯€犲嚱鏁癈hain锛岃瀹冪粨鏉熶簬Function銆傛坊鍔燨bject锛屾垜浠彲浠ョ湅鍒版湁涓変釜鏋勯€犲嚱鏁伴摼锛氫竴涓槸锛歰bj2-Fun-Function涓€涓槸锛欶unction-Function绗笁涓槸锛歄bject-Function"Object鏄竴涓唴缃嚱鏁帮紝newObject鏄竴涓璞?閫氳繃new鍏抽敭瀛楄繑鍥炰竴涓璞★級鈥濆師鍨嬮摼鍘熷瀷閾剧殑搴曞眰閫昏緫鏄彲浠ヤ粠鏈€搴曞眰鐨勫疄渚嬩竴鐩磋拷婧埌null锛歩nstance.__proto__.__proto__....__proto__===null鏋勯€犲嚱鏁伴摼鏄繖鏍风殑achain锛屽鏋渢rue杩欎箞鍐欓摼锛屽彧鑳芥槸锛歚Instance.__proto__.constructor.__proto__.constructor...__proto__.constructor===Function.prototype`褰撶劧杩欎釜閾惧啓鍑烘潵鎰熻娌℃剰涔?璇存槑锛歔Instance.__proto__]鎸囧悜瀹冪殑[Constructor1.prototype][Constructor1.prototype]鏈変竴涓睘鎬constauctor]鎸囧悜鏋勯€犲嚱鏁?鏈韩锛岄偅涔圼Constructor1.__proto__]琛ㄧず涓篬Instance.__proto__.constructor.__proto__]鍘熷瀷閾剧殑缁堢偣涓簄ullplus鍔熻兘涓猴細鍘熷瀷閾俱€佹瀯閫犲嚱鏁伴摼鍥剧墖瀵规瘮銆愭敞鎰忕澶存柟鍚戙€戣ˉ鍏呰鏄庯細鏋勯€犲嚱鏁伴摼鍜屽師鍨嬮摼瑕佸垎寮€鐞嗚В.涔嬪墠涓嶇煡閬撲负浠€涔圓鍑芥暟瀹炰緥涓嶄粎缁ф壙浜哋bject鐨勫師鍨嬫柟娉曪紝鑰屼笖杩樻槸Function鐨勫疄渚嬨€傚簲璇ュ垎寮€鐞嗚В锛岀劧鍚庢斁鍦ㄤ竴璧枫€俹bj1,obj2->Fun->Function杩欐槸鏋勯€犲嚱鏁伴摼銆俹bj1,obj2->Fun->Object锛屽氨鏄師鍨嬮摼銆傚鏋滃湪Fun.prototype涓婃坊鍔?aaFun'鏂规硶锛屽湪Function.prototype涓婃坊鍔?aaFunction'鏂规硶锛屽湪Object.prototype涓婃坊鍔?aaObject'鏂规硶锛岄偅涔坥bj1鍜宱bj2灏卞彲浠ョ户鎵夸簡锛堜笉鐭ラ亾鏄笉鏄缁ф壙灏卞浜嗭級aaFun锛宎aObject鏂规硶锛屼絾鏄繍琛宎aFunction浼氳繑鍥瀠ndefined鏂规硶锛屽洜涓鸿繖涓猘aFunction鏂规硶涓嶅湪鍘熷瀷閾句腑锛?/p>

最新推荐
猜你喜欢