佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 初學(xué)js者對javascript面向?qū)ο蟮恼J識分析

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

熱門標簽:電子圍欄 Mysql連接數(shù)設(shè)置 銀行業(yè)務(wù) 服務(wù)器配置 Linux服務(wù)器 阿里云 團購網(wǎng)站 科大訊飛語音識別系統(tǒng)
復(fù)制代碼 代碼如下:

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
復(fù)制代碼 代碼如下:

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)了要的效果,對于一些簡單的應(yīng)用,上面那段效果能夠滿足,但對于比較復(fù)雜的一些程序,應(yīng)用起來就比較麻煩,代碼上寫起來也較繁瑣;如代碼片段
Code
復(fù)制代碼 代碼如下:

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
復(fù)制代碼 代碼如下:

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>

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

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;iobjs.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邏輯上也比較清爽,對于多個事件的綁定還有待研究。
您可能感興趣的文章:
  • JS常見疑難點分析之match,charAt,charCodeAt,map,search用法分析
  • Javascript技術(shù)難點之a(chǎn)pply,call與this之間的銜接
  • javascript下數(shù)值型比較難點說明
  • 初學(xué)js 新節(jié)點的創(chuàng)建 刪除 的步驟
  • 初學(xué)JavaScript_03(ExtJs Grid的簡單使用)
  • 國外的為初學(xué)者寫的JavaScript教程
  • 走出JavaScript初學(xué)困境—js初學(xué)
  • 初學(xué)JavaScript第一章
  • JavaScript初學(xué)者的10個迷你技巧
  • 你有必要知道的10個JavaScript難點

標簽:衡水 廣元 江蘇 萍鄉(xiāng) 棗莊 蚌埠 大理 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《初學(xué)js者對javascript面向?qū)ο蟮恼J識分析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    休宁县| 分宜县| 曲松县| 乌拉特中旗| 威宁| 天津市| 大港区| 原平市| 灵武市| 栾城县| 湘西| 邵东县| 赤壁市| 积石山| 宁都县| 楚雄市| 洞口县| 怀化市| 阳泉市| 奉贤区| 百色市| 邮箱| 岱山县| 武冈市| 宁明县| 且末县| 棋牌| 日喀则市| 丹东市| 来凤县| 赤壁市| 汝南县| 百色市| 利津县| 石家庄市| 探索| 高青县| 宕昌县| 嘉兴市| 平邑县| 伊吾县|