锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓錛欵xt涓嬬被鍑芥暟瀹氫箟 Ext.extend(sb, sp, overrides)鏂規硶鏈変笁涓弬鏁幫紝榪欎笁涓弬鏁版湁涓瀹氱殑綾誨瀷瑕佹眰錛?br />
sb 涓鑸儏鍐典笅鏄竴涓被鍑芥暟銆?br />
sp錛氭湁涓ょ鎯呭喌錛氫竴縐嶆槸綾誨嚱鏁幫紝鍙︿竴縐嶆槸錛氫竴涓狾bject瀵硅薄銆?br />
overrides錛歄bject瀵硅薄錛岄氳繃Ext.override(sb, overrides);鏂規硶瑕嗙洊綾誨璞$殑灞炴с?/p>
閫氳繃浠g爜鍒嗘瀽錛屽彲浠ョ湅鍑篍xt.extend鏂規硶鏈変袱涓簲鐢細 閫掓柟寮忋?鐢ㄩ潰鍚戝璞¤璦鏉ヨ〃紺虹殑璇濓紝濡備笅緇撴瀯) 鎴戜滑鍙互鐪嬪嚭Ext.extend 鍙湁鍦╯p.constructor==Object.prototype.constructor鐨勬椂鍊欙紝鎵嶅垱寤哄茍榪斿洖涓涓嚱鏁幫紝璇ュ嚱鏁板氨涓鍙ヨ瘽錛?/p>
灝辨槸璋冪敤sb錛堝嵆鐖剁被鏋勯犲嚱鏁幫級 濡傛灉sp.constructor==Object.prototype.constructor 閭d箞sp搴旇鏄繖鏍鳳紝鏄竴涓璞$洿鎺ラ噺錛屾垨鑰卬ew Object鏂瑰紡鍒涘緩鐨勫璞★紝涓斿畠浠兘娌℃湁鏄劇ず瀹氫箟 constructor鏂規硶銆?/p>
浠ヤ笅榪欏嚑縐嶆儏鍐甸兘涓嶄細鏈塻p.constructor==Object.prototype.constructor銆?/p>
1錛歷ar obj = new Object(); obj.constructor=function(){...}; Ext.extend(sb,obj) //extend 榪斿洖鐨勭被灝辨槸constructor鍑芥暟 2: var obj = { constructor:function(){...} }; Ext.extend(sb,obj) //extend 榪斿洖鐨勭被灝辨槸constructor鍑芥暟 3: var obj = new function(){...}(); Ext.extend(sb,obj) //extend榪斿洖鐨勭被灝辨槸榪欎釜鍖垮悕鍑芥暟 4: var obj = new function(){ this.constructor=function(){...} }(); Ext.extend(sb,obj) //extend 榪斿洖鐨勭被灝辨槸constructor鍑芥暟銆?/p>
鎬葷粨 錛氬叾瀹炲緢綆鍗?Ext.extend榪欎箞鍋氱殑鐩殑鏄璇達紝瀹氫箟涓涓被錛屾瀯閫犲嚱鏁板氨鏄痗onstructor鏂規硶錛屽鏋滄病鏄劇ず瀹氫箟榪欎釜鏂規硶錛岄偅涔堢被灝變嬌鐢ㄧ埗綾誨嚱鏁頒綔涓烘柊綾葷殑鏋勯犲嚱鏁般?/p>
extcore閫氳繃錛欵xt.extend鏂規硶鏉ュ垱寤虹被錛堟瀯閫犲嚱鏁幫級錛岃繖涓被浠ヤ笅鐢╯b浠f浛銆?br />
榪欎釜綾誨嚱鏁伴粯璁や細鏈夎繖浜涘睘鎬э紙綾誨睘鎬э級銆?br />
superclass錛氱埗綾伙紝涔熷氨鏄涓涓垨絎簩涓弬鏁扮殑prototype灞炴у璞°傦紙鍏蜂綋鏍規嵁浼犲叆鐨勫弬鏁扮被鍨嬪喅瀹氾級
superclass(): 鐖剁被錛?sb.propertype涓? 榪欐槸涓涓嚱鏁幫紝璇ュ嚱鏁拌繑鍥炵埗綾葷殑propertype瀵硅薄
supr():鍚屼笂
constructor()錛氭瀯閫犲嚱鏁幫紝錛坰b鍑芥暟鐨刾ropertype瀵硅薄涓嬶級瀹為檯涓婂紩鐢ㄧ殑灝辨槸sb鍑芥暟鑷繁銆?br />
override(o)錛氶噸鍐欐柟娉曪紝錛坰b鍑芥暟涓嬶級錛岃皟鐢ㄧ殑鏄?Ext.override(sb, o);涔熷氨鏄皢o涓殑灞炴у鍒跺埌sb鐨刾ropertype涓嬨?br />
override(o)錛氶噸鍐欐柟娉曪紝錛坰b.propertype涓嬶級涔熷氨鏄皢o鐨勫睘鎬у鍒跺埌sb鐨刾ropertype涓嬨?br />
extend(o):(sb鍑芥暟涓?,璇ュ嚱鏁拌皟鐢ㄧ殑鏄疎xt.extend(sb.o);
絎竴錛?br />
鍥犱負js娌℃湁閲嶆瀯璇硶錛屾墍浠ユ垜浠病鍔炴硶瀹氫箟js鏂規硶鐨勯噸鏋勶紝鑰屼笂杈硅繖涓猠xtend鏂規硶錛屽彲浠ヨ鏄竴縐嶉噸鏋勭殑瀹炵幇銆傚洜涓猴紝鎴戜滑閫氳繃浠g爜鐨勫垎鏋愶紝鎴戜滑鍙互鎬葷粨鍑篹xtend鏂規硶鐨勫弬鏁頒紶
1:extend(Calss sb,Object sp);
2:extend(Calss sb,Class sp);
3:extend(Calss sb,Class sp,Object overrides);
絎竴縐嶆柟寮忕洰鐨勬槸瀹氫箟涓涓被鍑芥暟錛岃繖涓被鍑芥暟鐨勭埗綾諱負sb綾誨嚱鏁幫紝灞炴ф柟娉曠殑瀹氫箟鍦╯p瀵硅薄涓畬鎴愩?br />
姣斿錛?var Student = Ext.extend(Person,{
constructor:function(old){
this.age=old;
},
name:'sam'}
})
鍏跺疄閫氳繃
if(Ext.isObject(sp)){
overrides = sp;
sp = sb;
sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
}
var A=function(){
alert("this is a");
}
var B=function(){
alert("this is b");
}
var SubA = Ext.extend(A,new B());
var subA = new SubA();//榪欓噷灝變細寮瑰嚭 this is a 鐨勬彁紺恒?
絎簩縐嶆柟寮忥細淇敼鐜版湁綾葷殑綾葷粨鏋?br />
2:extend(Calss sb,Class sp);
榪欎釜鏂規硶鐨勭洰鐨勫叾瀹炰箣涓縐嶅寘瑁咃紝鏄皢sb緇ф壙浜巗p涓嬶紝涓嶇sb鏄笉鏄痚xt妗嗘灦涓嬬殑綾伙紝鍦ㄨ繖涓柟娉曟墽琛屽悗sb灝辨垚浜唀xt妗嗘灦
涓嬬殑綾葷粨鏋勪簡
3:extend(Calss sb,Class sp,Object overrides);
闄や簡鏈夌浜岀鏂規硶鐨勫姛鑳藉錛岃繕棰濆鐨勭粰sb娣誨姞鎴栬鐩栨柊鐨勬柟娉曟垨灞炴?br />
Ext.extend(Person,DongWu);
Ext.extend(Person,DongWu錛寋sex:'man'});
銆銆渚嬶細
function Person(){銆}錛?br />
銆銆Person.prototype.name = 'sam';
Person.prototype.sex = "鐢?錛?br />
var person = new Person();
alert(person.name) //鍊間負sam錛?/p>
銆銆娉ㄦ剰錛氱敤鏋勯犲嚱鏁頒綋鍐呭畾涔夌殑灞炴?濡俠: this.xxprop1=xxvalue1;) 涓庡湪鍑芥暟鐨刾rototype
瀵硅薄閲屾坊鍔犲睘鎬х殑鏂瑰紡鏈変粈涔堝尯鍒?
涓昏鍖哄埆鍦ㄤ簬:鏋勯犲嚱鏁頒綋鍐呭畾涔夌殑灞炴ф瘡嬈ew涓涓柊鐨勫璞℃椂錛岄兘浼氬湪鍐呭瓨涓垱寤鴻繖浜涘睘鎬?br />
鐨勫壇鏈紝鑰宲rototype閲屾坊鍔犵殑灞炴у垯涓嶄細錛屽畠浠湪鍐呭瓨涓緇堝彧鏈変竴浠斤紟涓嶄細鍥犱負瀵硅薄鐨勫垱寤猴紝
瀛樺湪瀵瑰垎灞炴х殑鍐呭瓨絀洪棿錛庝絾鏄粬浠殑璁塊棶鏂瑰紡閮芥槸涓鏍風殑錛岄兘鏄氳繃瀵硅薄鍚嶇偣灞炴у悕鐨勬柟寮?br />
錛坧erson.name錛夛紟
d: 閫氳繃瀵硅薄鐩存帴閲忕殑鏂瑰紡娣誨姞瀵硅薄灞炴э紟鏍煎紡錛氥var objectName={xxprop1:xxvalue,
xxprop2:xxvalue2};
鎴戜滑鐭ラ亾javascript鍒涘緩涓涓璞★紝鏈変笁縐嶆柟寮忥細
銆銆銆銆絎竴縐嶏細閫氳繃Object鍑芥暟鍒涘緩錛庡錛歷ar person = new Object();
鐒跺悗閫氳繃涓婇潰a鐨勬柟寮忓姞鍏ュ睘鎬у煎: person.name = 'sam';
絎簩縐? 閫氳繃瀹氫箟鏋勯犲嚱鏁版潵鍒涘緩.濡備笂b鏂瑰紡.濡?銆person = new Person();
絎笁縐嶆柟寮忥細閫氳繃瀵硅薄鐩存帴閲忓垱寤? 姣斿:
銆銆銆銆var person = {name:'sam',sex:'man',age:18};
鍗籌細澶ф嫭鍙峰唴鍐欏叆 灞炴?鍐掑彿 鍊箋錛屽嵆鍙紟