最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中prototype為對象添加屬性的誤區(qū)介紹

 更新時間:2013年10月15日 16:32:02   投稿:whsnow  
prototype為對象添加屬性的的過程中有些誤區(qū),在本文將為大家詳細介紹下,感興趣的朋友可不要錯過

先上需要用到的全部代碼片段(截取)

復(fù)制代碼 代碼如下:

MenuControl.prototype.boxDisplay = false;//是否顯示圖層選擇菜單
MenuControl.prototype.controlUI;
MenuControl.prototype.show = function(){
if(pointControl.boxDisplay){
pointControl.hide();
}
menuBoxDiv.style.display = "";
this.boxDisplay = true;
this.controlUI.style.backgroundColor = '#DDDDDD';
};
MenuControl.prototype.hide = function(){
menuBoxDiv.style.display = "none";
this.boxDisplay = false;
this.controlUI.style.backgroundColor = 'white';
};
//圖層選擇開關(guān)
function MenuControl(controlDiv, map) {
controlDiv.style.padding = '5px';
var controlUI = document.createElement('div');
this.controlUI = controlUI;
controlUI.style.backgroundColor = 'white';
controlUI.style.height = '18px';
controlUI.style.borderStyle = 'solid';
controlUI.style.borderWidth = '1px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
controlUI.title = '點擊啟用菜單';
controlDiv.appendChild(controlUI);


var controlText = document.createElement('div');
controlText.style.fontFamily = 'Arial,sans-serif';
controlText.style.fontSize = '12px';
controlText.style.paddingLeft = '4px';
controlText.style.paddingRight = '4px';
controlText.innerHTML = '<strong>圖層選擇</strong>';
controlUI.appendChild(controlText);


google.maps.event.addDomListener(controlUI, 'click', function() {
if(menuControl.boxDisplay){
menuControl.hide();
}else{
menuControl.show();
}
});
}
//點開關(guān)框體
PointControl.prototype.boxDisplay = false;//是否顯示圖層選擇菜單
PointControl.prototype.controlUI;
PointControl.prototype.show = function(){
if(menuControl.boxDisplay){
menuControl.hide();
}
pointBoxDiv.style.display = "";
this.boxDisplay = true;
this.controlUI.style.backgroundColor = '#DDDDDD';
};
PointControl.prototype.hide = function(){
pointBoxDiv.style.display = "none";
this.boxDisplay = false;
this.controlUI.style.backgroundColor = 'white';
};
function PointControl(controlDiv, map) {
controlDiv.style.padding = '5px';


var controlUI = document.createElement('div');
this.controlUI = controlUI;
controlUI.style.backgroundColor = 'white';
controlUI.style.height = '18px';
controlUI.style.borderStyle = 'solid';
controlUI.style.borderWidth = '1px';
controlUI.style.cursor = 'pointer';
controlUI.style.textAlign = 'center';
controlUI.title = '點擊操控點菜單';
controlDiv.appendChild(controlUI);


var controlText = document.createElement('div');
controlText.style.fontFamily = 'Arial,sans-serif';
controlText.style.fontSize = '12px';
controlText.style.paddingLeft = '4px';
controlText.style.paddingRight = '4px';
controlText.innerHTML = '<strong>點</strong>';
controlUI.appendChild(controlText);


google.maps.event.addDomListener(controlUI, 'click', function() {
if(pointControl.boxDisplay){
pointControl.hide();
}else{
pointControl.show();
}
});
}

做的是谷歌的地圖應(yīng)用,其中有右方有兩個div按鈕,通過點擊打開左方的div子菜單
 
要求是
 
打開前判斷該子菜單是否已經(jīng)為打開狀態(tài),如是,則先關(guān)閉,后打開

在開關(guān)子菜單時,按鈕會據(jù)相應(yīng)行為變色

這里就要求在各個按鈕的show()方法下操作另一按鈕的屬性和方法來達到開關(guān)的效果

開始時寫成這樣
復(fù)制代碼 代碼如下:

MenuControl.prototype.controlUI;
MenuControl.prototype.show = function(){
controlUI.style.backgroundColor = '#DDDDDD';//直接調(diào)用屬性
};
function MenuControl(controlDiv, map) {
controlUI = document.createElement('div');
controlUI.style.backgroundColor = 'white';
}

結(jié)果無論開關(guān)哪一個菜單,都只有“點”按鈕變色

原因大概是controlUI莫名定義為全局變量了

后來我試圖這樣
復(fù)制代碼 代碼如下:

MenuControl.prototype.controlUI;
MenuControl.prototype.show = function(){
this.controlUI.style.backgroundColor = '#DDDDDD';//添加this關(guān)鍵字
};
function MenuControl(controlDiv, map) {
controlUI = document.createElement('div');
controlUI.style.backgroundColor = 'white';
}

結(jié)果還是失敗

后來我想通了,大概這樣就可以了
復(fù)制代碼 代碼如下:

MenuControl.prototype.controlUI.style.backgroundColor = "white";//一上來就給你賦值,看你往哪兒跑
MenuControl.prototype.show = function(){
this.controlUI.style.backgroundColor = '#DDDDDD';
};
function MenuControl(controlDiv, map) {
controlUI = document.createElement('div');
this.controlUI.style.backgroundColor = 'white';
}

這樣至少有錯誤信息了,不能給undefined添加style屬性什么的

于是我絕望了,準(zhǔn)備給所有屬性也添加上全局變量,這樣調(diào)用就方便許多

沒成想,被自己啟發(fā)了

于是就有了最開始那段代碼
復(fù)制代碼 代碼如下:

MenuControl.prototype.controlUI;//先建立此屬性,挖一個坑
MenuControl.prototype.show = function(){
this.controlUI.style.backgroundColor = '#DDDDDD';//使用this關(guān)鍵字調(diào)用,實際調(diào)用的是this.controlUI對象
};
function MenuControl(controlDiv, map) {
var controlUI = document.createElement('div');//建立局部變量,并正常賦值
this.controlUI = controlUI;//將此局部變量反賦給this對象的屬性,達到關(guān)聯(lián)引用
controlUI.style.backgroundColor = 'white';//正常調(diào)用引用對象進行操控
}

這樣就將prototype添加的屬性和自身創(chuàng)建的局部變量關(guān)聯(lián)起來,使其可被外部其它對象所調(diào)用獲取

達到成功將同名屬性通過類對象進行區(qū)分并全局調(diào)用

相關(guān)文章

  • 淺析四種常見的Javascript聲明循環(huán)變量的書寫方式

    淺析四種常見的Javascript聲明循環(huán)變量的書寫方式

    這篇文章主要介紹了四種常見的聲明循環(huán)變量的書寫方式,對其進行簡單的分析和比較,需要的朋友可以參考下
    2015-10-10
  • 淺談javascript中的加減時間

    淺談javascript中的加減時間

    下面小編就為大家?guī)硪黄獪\談javascript中的加減時間。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JavaScript入門教程(9) Document文檔對象

    JavaScript入門教程(9) Document文檔對象

    Document文檔對象是JavaScript中window和frames對象的一個屬性,是顯示于窗口或框架內(nèi)的一個文檔。
    2009-01-01
  • JavaScript中的6種運算符總結(jié)

    JavaScript中的6種運算符總結(jié)

    這篇文章主要介紹了JavaScript中的6種運算符總結(jié),本文總結(jié)了算術(shù)運算符、賦值運算符、比較運算符、三元運算符、邏輯運算符、字符串連接運算符等,需要的朋友可以參考下
    2014-10-10
  • JavaScript之編碼規(guī)范 推薦

    JavaScript之編碼規(guī)范 推薦

    JavaScript是一種語法靈活,簡單易懂的腳本語言。正因為靈活,因此很多人在編寫代碼時,顯得很隨意,這就導(dǎo)致后期的修改、擴展和維護變得異常困難。遵循統(tǒng)一的編碼規(guī)范,不僅對C++和Java這種編譯型語言很重要,對JavaScript腳本語言也同樣如此
    2012-05-05
  • 學(xué)習(xí)JavaScript的最佳方法分享

    學(xué)習(xí)JavaScript的最佳方法分享

    你為學(xué)習(xí)JavaScript 制定的藍圖、路線、行動計劃!你不必擔(dān)心找不到最好的資源,先整理些不好的資源,再確定下一步該學(xué)什么。遵循它,一步一步來
    2011-10-10
  • JavaScript 事件對象介紹

    JavaScript 事件對象介紹

    這篇文章主要介紹了JavaScript 事件對象介紹,需要的朋友可以參考下
    2015-04-04
  • JavaScript操作Cookie詳解

    JavaScript操作Cookie詳解

    這篇文章主要介紹了JavaScript操作Cookie詳解,本文講解了什么是Cookie、Cookie基礎(chǔ)知識、Cookie常見問題、cookie 有兩種清除方式、Cookie基礎(chǔ)用法、Cookie高級用法等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • 每日十條JavaScript經(jīng)驗技巧(二)

    每日十條JavaScript經(jīng)驗技巧(二)

    本文是每日十條JavaScript經(jīng)驗技巧系列文章的第二篇,同樣給大家匯總介紹10條個人在項目中的一些經(jīng)驗,分享給大家,希望大家能夠喜歡
    2016-06-06
  • js setTimeout 常見問題小結(jié)

    js setTimeout 常見問題小結(jié)

    主要包括this指向問題、向setTimeout傳入?yún)?shù)等相關(guān)問題,下面與大家分享下以上問題的解決方法,感興趣的朋友可以參考下
    2013-08-08

最新評論

大方县| 卓资县| 东兴市| 南宁市| 颍上县| 许昌市| 乌兰县| 蒙阴县| 华阴市| 楚雄市| 梁平县| 新泰市| 东方市| 崇信县| 巴林左旗| 阿城市| 新宁县| 宜良县| 安岳县| 荥阳市| 筠连县| 新沂市| 容城县| 通海县| 玉门市| 邓州市| 大厂| 扎囊县| 鄱阳县| 馆陶县| 兴安县| 大丰市| 岚皋县| 福海县| 双峰县| 岢岚县| 汉寿县| 南开区| 吉水县| 绥江县| 新乐市|