一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - 初學js者對javascript面向?qū)ο蟮恼J識分析

初學js者對javascript面向?qū)ο蟮恼J識分析

2019-09-09 10:28asp之家 ASP教程

初學js者對javascript面向?qū)ο蟮恼J識分析,需要學習的朋友可以參考下。

代碼如下:


var obj = document.getElementById("name"); 
function clickMe() { 
alert(this.value); 
this.value += "!!!!"; 
alert(this.value); 

var ActionBinder = function() {//定義一個類 

ActionBinder.prototype.registerDOM = function(doms) { 
this.doms = doms;//注冊doms 

ActionBinder.prototype.registerAction = function(handlers) { 
this.handlers = handlers;//注冊一個動作 

ActionBinder.prototype.bind = function() { 
this.doms.onclick = this.handlers 
}//注冊doms的動作 
var binder = new ActionBinder();//按照ActionBinder的方法新建一個類 
binder.registerDOM(obj); 
binder.registerAction(clickMe); 
binder.bind(); 


先上一段用js寫的面向?qū)ο蟮拇a,先建立一個ActionBinder的類,寫法上也類似于java;因為js是基于html的dom對象來操作html的內(nèi)容,在類中定義一個注冊dom的方法registerDOM,用prototype將該方法原型化,方便調(diào)用;另外再增加一個注冊事件的方法registerAction,也用prototype方法原型化;最后再用一個原型化的動作bind將已注冊的dom和已注冊的事件綁定在了一起,并執(zhí)行。 
再上一段原始的js代碼片段: 
Code 

復制代碼代碼如下:


<body> 
<script> 
document.onload= function(){ 
var obj = document.getElementById("name"); 
obj.onclick = function(){alert(this.value);} 

</script> 
<input type="text" id="name" /> 
</body> 


代碼也實現(xiàn)了要的效果,對于一些簡單的應用,上面那段效果能夠滿足,但對于比較復雜的一些程序,應用起來就比較麻煩,代碼上寫起來也較繁瑣;如代碼片段 
Code 

復制代碼代碼如下:


<body> 
<script> 
document.onload= function(){ 
obj1 = document.getElementById("name1"); 
obj2 = document.getElementById("name2"); 
obj3 = document.getElementById("name3"); 
obj1.onclick = function(){alert(this.value);} 
obj2.onclick = function(){alert(this.value);} 
obj3.onclick = function(){alert(this.value);} 

</script> 
<input type="text" id="name1" value="111" /> 
<input type="text" id="name2" value="222" /> 
<input type="text" id="name3" value="333" /> 
</body> 


或者 
Code 

復制代碼代碼如下:


<body> 
<script> 
function clickMe(){alert(this.value);} 
</script> 
<input type="text" id="name1" value="111" onclick="return clickMe()" /> 
<input type="text" id="name2" value="222" onclick="return clickMe()" /> 
<input type="text" id="name3" value="333" onclick="return clickMe()" /> 
</body> 


當然上面兩段代碼也有其他一些更簡單的寫法,總的來說還是出現(xiàn)很多冗余的代碼。 
用面向?qū)ο蟮姆椒▽懢捅容^靈活,如 
Code 

復制代碼代碼如下:


<body> 
<script> 
window.onload = function() { 
var objs = document.getElementsByTagName("input"); 
function clickMe() { 
alert(this.value); 

var ActionBinder = function() {//定義一個類 

ActionBinder.prototype.registerDOM = function(doms) { 
this.doms = doms;//注冊doms 

ActionBinder.prototype.registerAction = function(handlers) { 
this.handlers = handlers;//注冊一個動作 

ActionBinder.prototype.bind = function() { 
this.doms.onclick = this.handlers 
}//注冊doms的動作 
for (var i=0;i<objs.length;i++ ){ 
var binder = new ActionBinder();//按照ActionBinder的方法新建一個類 
binder.registerDOM(objs[i]); 
binder.registerAction(clickMe); 
binder.bind(); 
}; 

</script> 
<input type="text" id="name" value="111"/> 
<input type="text" id="name1" value="222"/> 
<input type="text" id="name2" value="333"/> 
</body> 


這樣就不會有冗余的代碼,而且js邏輯上也比較清爽,對于多個事件的綁定還有待研究。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费视频片在线观看 | 99午夜高清在线视频在观看 | 精品一区二区三区高清免费不卡 | 久久久无码精品无码国产人妻丝瓜 | 丰满大乳欲妇三级k8 | 婷婷综合亚洲 | 亚洲视频在线观看免费视频 | m3u8久久国产精品影院 | 希岛爱理作品在线观看 | 四虎影视入口 | 日本黄色大片网站 | 青青91| 国产夜趣福利第一视频 | 欧美一级在线播放 | 午夜想想爱午夜剧场 | 日韩在线天堂免费观看 | 久久五月综合婷婷中文云霸高清 | 国产精品国产色综合色 | 爸爸干女儿小说 | 18美女光胸光屁屁洗澡 | 富士av105| 免费岛国| 国产大片免费在线观看 | 精品久久久久久国产91 | 男女姓交大视频免费观看 | 国产在线一区二区视频 | 亚洲青草视频 | 男人都懂www深夜免费网站 | 青草青草视频 | 波多野结衣之双方调教在线观看 | 91免费视频国产 | 亚洲精品www久久久久久久软件 | 91碰碰 | 日韩一区二区三区四区不卡 | 国内外精品免费视频 | 人与动人物人a级特片 | 国产成人精品免费大全 | 99热免费在线观看 | 99久久精品免费观看区一 | 99久久99热久久精品免费看 | 日韩精品特黄毛片免费看 |