JavaScript的面向?qū)ο筇匦?/h1>

//通過“{}”創(chuàng)建對象,對象的成員以鍵值對的形式存放在{}中雅镊,多個(gè)成員之間使用逗號(hào)分隔。
//封裝:這些表單項(xiàng)刃滓,以面向?qū)ο蟮乃季S來看仁烹,就是一個(gè)個(gè)對象。既有相同的基本特征咧虎,又有各自不同的地方卓缰。這些表單相當(dāng)于一個(gè)個(gè)類,elements繼承了這些類砰诵。體現(xiàn)了面向?qū)ο蟮姆庋b性

var elements= [
{
tag:'input',
text:'姓名',
attr:{type:'text',name:'user'},
option:null
},
{
tag:'input',
text:'性別:',
attr:{type:'radio',name:'gender'},
option:{m:'男',w: '女'}
},
{
tag:'input',
text:'愛好',
attr:{type:'checkbox',name:'hobby[]'},
option:{swimming:'游泳',reading:'讀書',running:'跑步'}
},
{
tag:'select',
text:'住址:',
attr:{name:'area'},
option:{'':'--請選擇--',bj:'北京',sh:'上海',sz:'深圳'}
},
{
tag:'input',
text:'自我介紹:',
attr:{name:'introduce',row:'5',cols:'50'},
option:null
},
{
tag:'input',
text:'',
attr:{type:'submit',value:'提交'},
option:null
}
];
var elements= [//多態(tài):同一個(gè)操作作用于不同的對象
{
tag:'input',
text:'姓名',
attr:{type:'text',name:'user'},
option:null
},
{
tag:'input',
text:'性別:',
attr:{type:'radio',name:'gender'},
option:{m:'男',w: '女'}
},
{
tag:'input',
text:'愛好',
attr:{type:'checkbox',name:'hobby[]'},
option:{swimming:'游泳',reading:'讀書',running:'跑步'}
},
];
//生成create()實(shí)例
var html=new FormBuilder(elements).create();
document.getElementById('form').innerHTML=html;

//將表單生成器封裝成一個(gè)構(gòu)造函數(shù)征唬,在匿名函數(shù)中定義的變量和函數(shù),都不會(huì)污染全局作用域茁彭,也體現(xiàn)了面向?qū)ο蟮姆庋b性总寒。
(function (window) {
var FormBuilder =function (data) {
this.data=data;
};
window.FormBuilder=FormBuilder;//FormBuilder作為傳入對象的屬性,而且window對象是全局的理肺,所以當(dāng)上述代碼執(zhí)行后摄闸,就可以直接使用FormBuilder
})(window);

繼承:Javascript規(guī)定善镰,每一個(gè)構(gòu)造函數(shù)都有一個(gè)prototype屬性,指向另一個(gè)對象年枕。這個(gè)對象的所有屬性和方法炫欺,都會(huì)被構(gòu)造函數(shù)的實(shí)例繼承,因此不變的方法被定義在prototype上面。不變的屬性熏兄,方法都可以定義成 .prototype. ;以FormBuilder.prototype.create來說品洛,如果有另外一個(gè)想要繼承它的話 直接可以A.prototype=FormBuilder.prototype,但是有缺點(diǎn)的是為了防止繼承鏈紊亂,寫A.prototype.contructor=A的時(shí)候相當(dāng)于把FormBuilder.prototype.contructor也給改了霍弹,也可以直接寫A.prototype=new FormBuilder();也需要寫A.prototype.contructor=A防止繼承鏈紊亂毫别。 這樣利用原型對象可以保存一些公共的屬性和方法娃弓。當(dāng)訪問某個(gè)對象中的不存在的屬性或方法時(shí)典格,會(huì)自動(dòng)調(diào)用原型中的屬性和方法。也就是繼承
FormBuilder.prototype.create=function () {
var html='';
for(var k in this.data){
var item ={tag:'',text:'',attr:{},option:null};
for(var n in this.data[k]){
item[n]=this.data[k][n];
}
html+= builder.toHTML(item);
}
return '<table>'+html+'</table>';
}
var builder ={
toHTML: function (obj) {
var html=this.item[obj.tag](this.attr(obj.attr), obj.option);
return '<tr><th>'+obj.text+'</th><td>'+html+'</td></tr>';
},
attr:function (attr) {
var html='';
for(var k in attr){
html+= k +'="'+ attr[k] +' " ';
}
return html;
},
item: {
input:function (attr,option) {
var html= '';
if(option === null){
html+='<input' +attr + '>';
}else{
for(var k in option){
html+= '<label><input ' + attr + 'value="' + k +'"'+ '>';
html+=option[k]+'</label>';
}
}
return html;
},
select:function (attr,option) {
var html='';
for(var k in option){
html += '<option value="'+ k +'">' + option[k] +'</option>';
}
return '<select '+attr +'>' +html +'</select>';
},
textarea:function (attr) {
return '<textarea '+ attr + '></textarea>';
}
}
};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末台丛,一起剝皮案震驚了整個(gè)濱河市耍缴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挽霉,老刑警劉巖防嗡,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侠坎,居然都是意外死亡蚁趁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門实胸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來他嫡,“玉大人,你說我怎么就攤上這事庐完「质簦” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵门躯,是天一觀的道長淆党。 經(jīng)常有香客問我,道長讶凉,這世上最難降的妖魔是什么染乌? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮懂讯,結(jié)果婚禮上荷憋,老公的妹妹穿的比我還像新娘。我一直安慰自己域醇,他們只是感情好台谊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布蓉媳。 她就那樣靜靜地躺著,像睡著了一般锅铅。 火紅的嫁衣襯著肌膚如雪酪呻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天盐须,我揣著相機(jī)與錄音玩荠,去河邊找鬼。 笑死贼邓,一個(gè)胖子當(dāng)著我的面吹牛阶冈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塑径,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼女坑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了统舀?” 一聲冷哼從身側(cè)響起匆骗,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎誉简,沒想到半個(gè)月后碉就,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闷串,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年瓮钥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烹吵。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碉熄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出年叮,到底是詐尸還是另有隱情具被,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布只损,位于F島的核電站一姿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跃惫。R本人自食惡果不足惜叮叹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爆存。 院中可真熱鬧蛉顽,春花似錦、人聲如沸先较。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至曾棕,卻和暖如春扣猫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翘地。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工申尤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衙耕。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓昧穿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親橙喘。 傳聞我的和親對象是個(gè)殘疾皇子时鸵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容