国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

初學js者對javascript面向對象的認識分析

2024-05-04 11:08:46
字體:
來源:轉載
供稿:網友
初學js者對javascript面向對象的認識分析,需要學習的朋友可以參考下。
 
 
 
復制代碼代碼如下:

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寫的面向對象的代碼,先建立一個ActionBinder的類,寫法上也類似于java;因為js是基于html的dom對象來操作html的內容,在類中定義一個注冊dom的方法registerDOM,用prototype將該方法原型化,方便調用;另外再增加一個注冊事件的方法registerAction,也用prototype方法原型化;最后再用一個原型化的動作bind將已注冊的dom和已注冊的事件綁定在了一起,并執行。 
再上一段原始的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> 

代碼也實現了要的效果,對于一些簡單的應用,上面那段效果能夠滿足,但對于比較復雜的一些程序,應用起來就比較麻煩,代碼上寫起來也較繁瑣;如代碼片段 
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> 

當然上面兩段代碼也有其他一些更簡單的寫法,總的來說還是出現很多冗余的代碼。 
用面向對象的方法寫就比較靈活,如 
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邏輯上也比較清爽,對于多個事件的綁定還有待研究。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舟曲县| 库车县| 牙克石市| 元江| 轮台县| 乌什县| 吉安市| 宜阳县| 锦屏县| 呼图壁县| 合肥市| 固安县| 黄浦区| 吉林省| 剑川县| 庄河市| 汉源县| 承德市| 威远县| 唐海县| 丰城市| 修水县| 扬州市| 武陟县| 泽库县| 大姚县| 锦屏县| 柳林县| 合作市| 铜鼓县| 内丘县| 汨罗市| 乡宁县| 明星| 庄浪县| 阿城市| 宁海县| 万全县| 黄石市| 遂平县| 门源|