鍓嶈█HTML涓殑涓€鍒囬兘鏄爣绛俱€侰SS涓殑涓€鍒囬兘鏄竴涓洅瀛愩€侸avaScript涓殑涓€鍒囬兘鏄璞°€傚璞avaScript瀵硅薄鐨勬湰璐ㄦ槸鏁版嵁鍜屽嚱鏁扮殑闆嗗悎锛岃娉曚笂琛ㄧず涓洪敭鍊煎鐨勯泦鍚堛€俴ey瀵硅薄鐨刱ey鍙互鐞嗚В涓轰竴涓彉閲忓悕銆傚€煎璞$殑鍊肩被鍨嬪彲浠ユ槸浠讳綍鏁版嵁绫诲瀷銆傞敭鍊煎鍦ㄩ敭鍜屽€间箣闂寸敤锛氳繛鎺ャ€傚缁勯敭鍊煎涔嬮棿鐢?鍒嗛殧銆俵etprofile={name:'鍚村溅绁?,age:48,charmingThenMe:false,works:['鐗硅鏂颁汉','鏂拌瀵熸晠浜?,'寮熷瓙','鍙嶆毚鍔?],bio:function(){alert('浣犱細鎵撲汉鍚楋紵浣犲緢浼氭墦浜恒€?)},hi(){this.bio()alert('浣犲嚭鏉ユ贩锛屼竴瀹氳鏈夊奖鍝嶅姏鍜岃儗鏅紝浣犳槸鍝潯璺?')}}鏍规嵁鍊兼槸鍚︿负鍑芥暟鐨勬爣鍑嗭紝閿€煎杩涗竴姝ュ垎涓哄睘鎬э紙property锛夊拰鏂规硶锛坢ethod锛夈€傚璞℃槸鏁版嵁鍜屽嚱鏁扮殑闆嗗悎锛屾暟鎹搴斿睘鎬э紝鍑芥暟瀵瑰簲鏂规硶銆備互profile涓轰緥锛屽墠鍥涗釜鏄睘鎬э紝鍚庝袱涓槸鏂规硶銆俬i(){...}//绛夊悓浜巋i:function(){...}//浠ヤ笂鍐欐硶鏄柟娉曠殑绠€鍐欍€傝闂闂竴涓璞$殑閿€煎鏈変袱绉嶆柟寮忥紝鍒嗗埆鏄偣璁块棶鍜屾嫭鍙疯闂€?/鐐规帴鍏rofile.name//'鍚村溅绁?//鎷彿鎺ュ叆profile['age']//48褰撲綘鍙戠幇鍦ㄦ煇浜涚壒娈婂満鏅棤娉曞疄鐜扮偣鎺ュ叆鏃讹紝璁板緱灏濊瘯鎷彿鎺ュ叆銆傚ぇ澶氭暟杩欎簺鐗规畩鎯呭喌閮芥槸鍦ㄨ繍琛屾椂鐢熸垚瀵嗛挜鏃跺嚭鐜扮殑銆傛瘮濡傦細閬嶅巻鏃堕渶瑕佷粠瀹炲弬涓幏鍙杒ey鐨勬椂鍊欍€傛垨鑰呮偍闇€瑕佸悓鏃跺畾涔夊璞$殑閿拰鍊笺€傚湪鏋勯€犲嚱鏁扮殑瀹為檯寮€鍙戜腑锛屽鏋滀互涓婅堪鏂瑰紡浣跨敤瀵硅薄锛屾剰鍛崇潃姣忔闇€瑕侀厤缃枃浠舵椂锛岄兘闇€瑕佹墜鍔ㄧ紪鍐欎竴涓叿鏈夌浉鍚宬ey鐨勫璞★紝杩欏皢甯︽潵鐏鹃毦鎬х殑鍚庢灉锛氫竴鏃︽暟閲忓法澶ч噸澶嶇殑浠g爜闇€瑕佹洿鏂板睘鎬ф垨鏂规硶锛屼綘蹇呴』杩唬鎴戜滑闇€瑕佹娊璞$殑姣忎釜瀵硅薄銆傚叿浣撴潵璇达紝鎴戜滑闇€瑕佷竴涓彲浠ヨ嚜鍔ㄥ垱寤哄叿鏈夌浉鍚岄敭鐨勫璞$殑鍑芥暟锛岃€屼笉鏄瘡娆′娇鐢ㄦ椂閮芥墜鍔ㄩ噸鍐欓敭銆?/key鍙渶瑕佸湪瀹氫箟createProfile()鏃跺啓涓€娆unctioncreateProfile(name,age,charmingThenMe,works,bio,hi){leto={}o.name=nameo.age=ageo.charmingThenMe=charmingThenMeo.works=workso.bio=function(){alert(bio)}o.hi=function(){o.bio()alert(hi)}returno}//鍚庨潰鐢熸垚瀵硅薄鏃讹紝鍙渶瑕佸啓鍏ュ€硷紝key浼氳嚜鍔ㄥ~鍏卨etedisonChen=createProfile('闄堝啝甯?,42,false,['鏃犻棿閬?,'澶存枃瀛桪','绁炴灙鎵?],'鍐嶉┈鎷撴捣','寰俊杞处涓夌櫨鍏?)闄堝啝甯屻€俷amedisonChen.hi()鐨勬娊璞″疄鐜般€備絾鏄痗reateProfile()濂藉儚鏈夌偣澶氫綑锛屾垜浠垎鏋愪竴涓媍reateProfile()鍐呴儴鍋氫簡浠€涔堬細leto={}鍒涘缓涓€涓┖瀵硅薄o.foo=bar缁欏璞℃坊鍔犲睘鎬у拰鏂规硶returnoreturn鏂板垱寤虹殑瀵硅薄thisIs'瀹冪殑浣滅敤鏄柊鐨勶紒褰撲娇鐢╪ew璋冪敤涓€涓嚱鏁帮紙杩欓噷鍙玣()锛夋椂锛屽叿浣撹繃绋嬩細鏄細鍒涘缓涓€涓┖瀵硅薄o锛屽皢o鐨勫師鍨嬫寚鍚慺()鐨刾rototype灞炴€э紝灏唗his缁戝畾鍒皁锛屾墽琛宖()杩斿洖o琛ㄧず濡傛灉鎴戜滑浣跨敤new鏉ヨ皟鐢ㄧ敓鎴愬璞$殑鍑芥暟锛屾垜浠彧闇€瑕佸叧娉ㄦ牳蹇冧笟鍔¢€昏緫锛屾瘮濡傜敓鎴愪竴涓┖瀵硅薄锛岀粦瀹歵his锛岃繑鍥炲璞★紝杩欐牱鐨勭悙浜嬫槸鐩存帴濮旀墭鐨勩€俧unctionProfile(name,age,charmingThenMe,works,bio,hi){this.name=namethis.age=agethis.charmingThenMe=charmingThenMethis.works=worksthis.bio=function(){alert(bio)}杩欎釜.hi=function(){this.bio()alert(hi)}}Profile鍑芥暟浣撳彧鏈塶ew瀵硅薄闇€瑕佺殑鏁版嵁鍜屾柟娉曪紝鎴戜滑鐪熺殑鍙叧娉ㄨ繖閮ㄥ垎銆傝嚦浜庡嚱鏁板悕涓轰粈涔堜粠createProfile鏀逛负Profile锛岃繖瀹屽叏绗﹀悎鎯緥锛氫娇鐢ㄥ璞″悕锛屽苟浠ュぇ鍐欏紑澶翠綔涓哄璞℃瀯閫犲嚱鏁扮殑鍚嶇О銆俵etj=newProfile('鍛ㄦ澃浼?,43,false,['澶滄洸','鏈€浼熷ぇ鐨勪綔鍝?],'鍝?,'涓嶉敊')j.worksj.hi()杩欐槸JavaScript鏋勯€犲嚱鏁般€傚師鍨婮avaScript涓殑姣忎釜瀵硅薄閮芥湁涓€涓О涓哄師鍨嬬殑鍐呯疆灞炴€с€傚師鍨嬩篃鏄璞★紝鍘熷瀷涔熸湁鍘熷瀷锛屽彲浠ラ€愮骇杩芥函锛屽舰鎴愬師鍨嬮摼銆傚綋瀵硅薄鐨勫師鍨嬩负绌烘椂锛屽師鍨嬮摼缁撴潫銆備竴涓璞′笉浠呭彲浠ヨ闂嚜宸辩壒鏈夌殑灞炴€у拰鏂规硶锛岃繕鍙互璁块棶鏁翠釜鍘熷瀷閾句笂鎵€鏈夊璞$殑灞炴€у拰鏂规硶銆傝繖灏辫В閲婁簡涓轰粈涔堝彧澹版槑涓€涓瓧绗︿覆灏卞彲浠ヨ皟鐢ㄤ竴鎵瑰瓧绗︿覆鍐呯疆鏂规硶銆?/鍦ㄦ帶鍒跺彴涓墽琛屼互涓嬩唬鐮侊細leto={name:'a',hi(){console.log(`helloworld`);}}o;鐐瑰嚮鎺у埗鍙拌繑鍥炵殑瀵硅薄锛屼綘浼氬彂鐜帮紝闄や簡鏂拌嚜瀹氫箟鐨勫睘鎬у悕鍜屾柟娉昲i()锛岃繕鏈変竴涓緢濂囨€殑[[Prototype]]锛岀偣鍑诲畠锛屼綘浼氬彂鐜板彟涓€涓鎬殑key鈥斺€擾_proto__銆傝繖鏄璞鐨勫師鍨嬶紝瀹冧笉浠呯湅璧锋潵寰堝鎬紝杩炲悕瀛楅兘娌℃湁銆傛槸鐨勶紝ECMAScript璁や负瀵硅薄鍘熷瀷鈥滀笉閰嶆嫢鏈夊悕绉扳€濄€傝櫧鐒朵綘鍙互閫氳繃o.__proto__璁块棶瀹冿紝浣嗘槸o.__proto__鏄竴涓笉琚爣鍑嗚瘑鍒殑灞炴€с€傚畠鍙槸涓昏娴忚鍣ㄧ殑鍐呴儴瀹炵幇锛屽凡琚寮忓簾寮冦€傝幏鍙栧師鍨嬩笉瑕佷娇鐢╛_proto__灞炴€ф潵鑾峰彇瀵硅薄鐨勫師鍨嬨€備娇鐢∣bject.getPrototypeOf()鏉ヨ幏鍙栧畠銆俵etn=123do{n=Object.getPrototypeOf(n)console.log(n)}while(n)//Number//Object//null璁剧疆鍘熷瀷鍦↗avaScript涓竴鑸娇鐢∣bject.create()鎴栬€呮瀯閫犲嚱鏁拌缃師鍨嬨€侽bject.create()浣跨敤鍙傛暟浣滀负鍘熷瀷鐢熸垚涓€涓柊瀵硅薄銆俵eta={hi(){console.log('helloworld')}}letb=Object.create(a)b.hi()//鍦╤elloworldconstructorJavaScript涓紝鎵€鏈夊嚱鏁伴兘鏈変竴涓悕涓哄師鍨嬬殑灞炴€э紝褰撲娇鐢╪ew鍏抽敭瀛楄皟鐢ㄦ瀯閫犲嚱鏁扮敓鎴愭柊瀵硅薄锛屾瀯閫犲嚱鏁扮殑prototype灞炴€ц缃负鏂扮敓鎴愬璞$殑鍘熷瀷銆傝繖绉嶆満鍒跺彲浠ヤ繚璇佸彧瑕佹寚瀹氫簡鏋勯€犲嚱鏁扮殑鍘熷瀷灞炴€э紝鏋勯€犲嚱鏁扮敓鎴愮殑鎵€鏈夋柊瀵硅薄鐨勫師鍨嬪氨鍙互淇濇寔涓€鑷淬€?/澹版槑骞跺垵濮嬪寲涓€涓按鏋滃璞′綔涓烘瀯閫犲嚱鏁颁娇鐢ㄧ殑鍘熷瀷瀵硅薄letfruit={hi(){console.log(`eata${this.name}${this.name}`)}}//declarationFruit(constructor)functionfunctionFruit(name){this.name=name}//璁剧疆鏋勯€犲嚱鏁扮殑鍘熷瀷灞炴€ruit.prototype.hi=fruit.hi//or//Fruit.prototype=fruitletp=newFruit('Peach')//鐢熸垚涓€涓柊瀵硅薄pp.hi()//'鍚冧竴涓瀛?console.log(Fruit.prototype===Object.getPrototypeOf(p))//true//閮戒娇鐢ㄥ瓧闈㈤噺鏂规硶涓篺ruit鍒涘缓涓€涓猣ruit瀵硅薄锛屽湪瀵硅薄涓畾涔塰i鏂规硶澹版槑鏋勯€犲嚱鏁癋ruit锛岄€氳繃this涓烘墽琛屾椂鐢熸垚鐨勬柊瀵硅薄娣诲姞name灞炴€у拰value锛屽湪鏋勯€犲嚱鏁板師鍨嬩腑娣诲姞fruit鐨刪i鏂规硶锛堝疄闄呬腑锛屽師鍨嬪線寰€鏈夊涓睘鎬э紝杩欐椂鐩存帴璧嬪€间竴娆℃€ф坊鍔狅級浣跨敤new鍏抽敭瀛楃敓鎴愪竴涓柊鐨勫璞锛屽苟璋冪敤p鐨刪i鏂规硶锛坧鏈韩鍋氱殑锛夋病鏈塰i鏂规硶锛岃€屾槸缁ф壙鑷猣ruits锛夐獙璇佹瀯閫犲嚱鏁扮殑鍘熷瀷鍜屾柊瀵硅薄p鍘熷瀷鐨勪竴鑷存€у彲浠ョ湅鍑猴紝鍦ㄤ笂闈㈢殑渚嬪瓙涓紝鏋勯€犲嚱鏁癙each鐢熸垚鐨勫璞鏈変袱涓敭锛氫竴涓槸灞炴€у悕锛屽湪鏋勯€犲嚱鏁颁腑瀹氫箟锛屽彟涓€涓槸鏂规硶hi锛岀洿鎺ュ湪鍘熷瀷涓畾涔夊璞′笂瀹氫箟鐨勫睘鎬э紝涓嶆槸閫氳繃缁ф壙鑾峰彇鐨勶紝鏄嚜鏈夊睘鎬с€備娇鐢∣bject.hasOwn()鍒ゆ柇灞炴€ф槸鍚︿负鑷韩灞炴€э細console.log(Object.hasOwn(p,'name'))//tureconsole.log(Object.hasOwn(p,'hi'))//鍋囨帶鍒跺彴銆俵og(Object.hasOwn(fruits,'hi'))//true濡傛灉蹇呴』浣跨敤灞炴€у拰鏂规硶鏉ュ尯鍒嗛敭锛屼弗鏍兼潵璇达紝鑷湁灞炴€у簲璇ョО涓鸿嚜鏈夐敭銆備絾鏄紝鍦ㄥ緢澶氭儏鍐典笅锛屽睘鎬у苟涓嶅尯鍒嗙嫮涔夌殑灞炴€у拰鏂规硶锛屽悗鑰呭湪鏍囧噯涓篃娌℃湁瀹氫箟銆傚師鍨嬫€荤粨鍥為【涓婇潰鐨勬按鏋滀緥瀛愶紝鎬濊€冧互涓嬮棶棰橈細涓轰粈涔堣鍦ㄥ師鍨嬩腑瀹氫箟鏂规硶锛屽湪鏋勯€犲嚱鏁颁腑瀹氫箟灞炴€э紵鍥犱负杩欑琛屼负鍜屾暟鎹垎绂荤殑鏈哄埗姝eソ閫傚悎绫诲拰瀹炰緥銆傚璞¤鎶借薄鎴愮被鏄洜涓哄畠浠叿鏈夌浉鍚岀殑琛屼负锛岃涓猴紙鏂规硶锛夌敱绫伙紙鍘熷瀷锛夊畾涔夈€傚璞″洜鏁版嵁鐨勪笉鍚岃€屼緷娆℃垚涓哄疄渚嬶紝鑰屾暟鎹紙灞炴€э級鏄敱鏋勯€犲嚱鏁帮紙杩斿洖瀹炰緥锛夊畾涔夌殑銆傚師鍨嬫槸JavaScript寮哄ぇ鑰岀伒娲荤殑鐗规€т箣涓€锛屽畠浣夸唬鐮侀噸鐢ㄥ拰瀵硅薄缁勫悎鎴愪负鍙兘銆傜被JavaScript鎻愪緵浜嗕竴绉嶅寮€鍙戜汉鍛樻洿鍙嬪ソ鐨勬柟寮忔潵瀹炵幇绫诲拰瀹炰緥鈥斺€旂被銆備互姘存灉涓轰緥锛歝lassFruits{nameconstructor(name){this.name=name}hi(){console.log(`Eata${this.name}${this.name}`)}}letp=newFruits('馃崙')p.hi()//鍚冧竴涓煃戰煃戝彲浠ョ湅鍒扮被浼氭牴鎹師鍨嬮摼閫氳繃灏佽绛夋楠ょ敓鎴愬璞★細澹版槑骞跺垵濮嬪寲鍘熷瀷瀵硅薄锛屽0鏄庢瀯閫犲嚱鏁?鍒濆鍖栨瀯閫犲嚱鏁扮殑鍘熷瀷灞炴€ц娉曠浉姣旂函鏋勯€犲嚱鏁拌繘涓€姝ョ畝鍖栥€傜渷鐣ュ睘鎬ф偍鐢氳嚦鍙互鐪佺暐灞炴€у0鏄庛€俢lassFruits{constructor(name){this.name=name}hi(){console.log(`eat${this.name}${this.name}`)}}letp=newFruits('馃崙')p.hi()//鍙栦竴涓煃戰煃戔殸锔忔敞鎰忥細瀹炶返涓笉瑕佺渷鐣ワ紝鍥犱负浼氶檷浣庝唬鐮佺殑鍙鎬с€傚睘鎬х殑榛樿鍊煎垵濮嬪寲灞炴€ф椂锛屽彲浠ユ寚瀹氶粯璁ゅ€笺€傜被姘存灉{鍚嶇О鏋勯€犲嚱鏁帮紙鍚嶇О锛墈this.name=鍚嶇О||'馃崏'}hi(){console.log(`Eat${this.name}${this.name}`)}}letw=newFruits()w.hi()//Eata馃崏馃崏鐪佺暐constructor濡傛灉涓嶉渶瑕佸垵濮嬪寲锛屾瀯閫犲嚱鏁板彲浠ョ渷鐣ャ€俢lassFruits{hi(){console.log(`eatafart`)}}letp=newFruits()p.hi()//eatafart缁ф壙鍘熷瀷鏈夊師鍨嬮摼锛岀被鏈夌户鎵裤€備互姹借溅涓轰緥锛岄鍏堝畾涔夋苯杞︾殑鐖剁被锛?log(`Thisis${this.brand}`)}}閫氳繃缁ф壙car锛屽畾涔夌數鍔ㄨ溅锛歝lassEVextendsVehicle{batteryType//鍓╀綑鐢垫睜绫诲瀷//鍓╀綑鐢甸噺constructor(b,bt,r){瓒呯骇锛坆锛夎繖涓€俠atteryType=btthis.remaining=r}charge(){lett=0switch(this.batteryType){case'涓夊厓閿?:t=(1-this.remaining)/2breakcase'纾烽吀閾侀攤':t=1-this.remainingbreakdefault:t=Math.random()}console.log(`浜茬埍鐨?{this.brand}鎵€鏈夎€咃細`+`鎮ㄧ殑${this.batteryType||''}鐢垫睜`+`瀹冨彧闇€瑕?{Math.ceil(t*60)}鍒嗛挓灏卞彲浠ュ~婊★紒`)}}浣跨敤extends浠庣埗绫荤户鎵垮睘鎬у拰鏂规硶锛屼娇鐢╯uper()璋冪敤鐖剁被鐨勬柟娉曘€俵ett=newEV('Tesla','涓夊厓閿?,0.3)t.charge()//灏婃暚鐨勭壒鏂媺杞︿富锛氭偍鐨勪笁鍏冮攤鐢垫睜鍙渶21鍒嗛挓鍗冲彲鍏呮弧鐢碉紒letw=newEV('WuLing','LiFePO4',0.5)w.charge()//灏婃暚鐨刉uLing杞︿富锛氭偍鐨凩iFePO4鐢垫睜鍙渶30鍒嗛挓鍗冲彲鍏呮弧鐢碉紒閫氳繃缁ф壙锛屽瓙绫诲彲浠ヤ娇鐢ㄧ埗绫荤殑灞炴€у拰鏂规硶銆傛偍杩樺彲浠ュ畾涔夊瓙绫昏嚜宸辩殑灞炴€у拰鏂规硶銆傜敋鑷筹紝鐖剁被涓凡鏈夌殑灞炴€у拰鏂规硶涔熸敮鎸佸湪瀛愮被涓噸瀹氫箟銆傜粨鏉熻class铏界劧鐪嬭捣鏉ユ槸涓柊浜嬬墿锛屼絾鏈川涓婃槸鍘熷瀷閾撅紝鎴栬€呰鏄師鍨嬮摼鐨勮娉曠硸銆侸avaScript鏈川涓婁笉鏄紶缁熸剰涔変笂鐨勯潰鍚戝璞$殑缂栫▼璇█锛孞avaScript鏄竴绉嶅熀浜庡師鍨嬬殑缂栫▼璇█銆?/p>
