麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

Javascript監(jiān)視變量變化的方法

2024-05-06 16:21:52
字體:
供稿:網(wǎng)友

這篇文章主要介紹了Javascript監(jiān)視變量變化的方法,涉及javascript針對變量的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Javascript監(jiān)視變量變化的方法。分享給大家供大家參考。具體分析如下:

大家應(yīng)該知道,在C#中對于屬性、文件等的更改監(jiān)視非常簡單,因?yàn)橛形?事件)、FileSystemWatcher等好東東扶持。

那么在JavaScript中,如何對變量的更改進(jìn)行監(jiān)視呢?首先,我仿照c#的屬性來對JS進(jìn)行操作,寫出了如下的示例:

 

 
  1. function Class1() 
  2. var oldValue=''
  3. var name='xu'
  4. var id='1'
  5. this.setName=function(n) 
  6. oldValue=name; 
  7. name=n; 
  8. this.propertyChange('name',oldValue,n); 
  9. this.setID=function(n) 
  10. oldValue=id; 
  11. id=n; 
  12. this.propertyChange('id',oldValue,n); 
  13. this.display=function() 
  14. alert(name+'/'s id is :'+id); 
  15. Class1.prototype={ 
  16. propertyChange:function(propertyName,oldValue,newValue) 
  17. alert(propertyName+'/'s value changed from '+oldValue+' to '+newValue);  
  18. }; 
  19. var c=new Class1(); 
  20. c.setName('xu22'); 
  21. c.setID('5'); 
  22. c.display(); 

將對對象內(nèi)部變量(私有變量)的賦值操作提取到了方法中,而在該方法中觸發(fā)相應(yīng)的變量值更改回調(diào)方法。

按說這樣搞就能監(jiān)視變量 的更改了,但是在FireFox的官方網(wǎng)站上有一個(gè)叫Object.watch(unwatch)的東東,可以用來監(jiān)視變量的變更。

非常可惜的是,這個(gè)方法在IE等瀏覽器下不能正常運(yùn)行。俺到網(wǎng)上搜了一番,在

http://stackoverflow.com/questions/1269633/javascript-watch-for-object-properties-changes

中找到如下東東:

 

 
  1. if (!Object.prototype.watch) 
  2. Object.prototype.watch = function (prop, handler)  
  3. var oldval = this[prop], newval = oldval, 
  4. getter = function () 
  5. return newval; 
  6. }, 
  7. setter = function (val)  
  8. oldval = newval; 
  9. return newval = handler.call(this, prop, oldval, val); 
  10. }; 
  11. if (delete this[prop]) 
  12. {  
  13. if (Object.defineProperty) // ECMAScript 5 
  14. {  
  15. Object.defineProperty(this, prop, {get: getter,set: setter}); 
  16. else if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__)  
  17. Object.prototype.__defineGetter__.call(this, prop, getter); 
  18. Object.prototype.__defineSetter__.call(this, prop, setter); 
  19. }; 
  20. if (!Object.prototype.unwatch) 
  21. Object.prototype.unwatch = function (prop)  
  22. var val = this[prop]; 
  23. delete this[prop];  
  24. this[prop] = val; 
  25. }; 

通過__defineSetter__來對賦值操作監(jiān)聽~~~

OK,好東西。收藏一下。

希望本文所述對大家的javascript程序設(shè)計(jì)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 免费黄色大片在线观看 | 精品国产91久久久久久久妲己 | 久久最新网址 | 国产91丝袜在线播放0 | 日本欧美一区二区三区视频麻豆 | 亚洲第一页夜 | 色av综合在线 | 免费视频a| 欧美日韩电影在线 | 日韩黄色免费电影 | 激情在线观看视频 | 久草经典视频 | 羞羞羞网站 | 久久精品99久久久久久2456 | 一级在线| 久久国产精品影视 | 欧美成人午夜一区二区三区 | 国产超碰人人做人人爱 | 欧美在线成人影院 | 亚洲国产视频网 | 麻豆视频在线观看 | 日本人乱人乱亲乱色视频观看 | 成人午夜视频在线观看 | 成片免费大全 | 91av资源在线 | 九九热视频免费在线观看 | 日韩精品久久久久久久九岛 | 毛片视频大全 | 免费男女乱淫真视频 | 久久国产亚洲精品 | 久久精品国产清自在天天线 | 99精品视频一区二区三区 | 国产精品一区在线看 | 亚洲成人午夜精品 | 九九热这里只有精品8 | 香蕉久久久久久 | 激情九九| 二区视频 | 久久看免费视频 | 毛片一级免费看 | 午色影院 |