日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript中闭包实现的私有属性的getter()和setter()方法

發布時間:2024/6/21 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript中闭包实现的私有属性的getter()和setter()方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注意:

以下的輸出都在瀏覽器的控制臺中

<!DOCTYPE html> <html> <head><meta charset="utf-8"><title>閉包</title> </head> <body> <script type="text/javascript"> /*** 利用閉包實現* 這個函數給對象o增加了屬性存儲器方法* 方法名稱為get<name>和set<name>。如果提供了一個判斷函數* setter方法就會用它來檢測參數的合法性,然后再存儲它* 如果判定函數返回false,setter方法就會拋出一個異常** 這個函數具有getter和setter函數* 所操作的屬性值并沒有存儲在對象o中* 想反,這個值僅僅是保存在函數中的局部變量中* getter和setter方法同樣是局部函數,因此可以訪問這個局部變量* 也就是說,對兩個存取器方法來設置或或修改這個值*/ function addPrivateProperty(o,name,predicate) {var value;//這是一個屬性值//getter方法簡單地將其返回o['get'+name] = function(){return value;};//setter方法首先檢查值示范合法,若不合法就會拋出異常//否則就將其存儲起來o['set'+name] = function(v){if(predicate && !predicate(v))throw Error('set'+name+": invalid value "+v);elsevalue = v;}; }//想的代碼展示addPrivateProperty()方法 var o = {};//設置一個空對象//增加屬性存儲器方法getName()和setName() //確保只語序字符串值 addPrivateProperty(o,"Name",function(x){return typeof x==="string";}); o.setName("Frank"); //設置屬性值 console.log(o.getName()); //獲取屬性值 try{o.setName(0); //設置一個非字符值,會拋出一個錯誤 (由throw語句拋出) }catch(e){console.log("屬性值設置出錯"); //上面拋出的錯誤在這里的到處理 }</script> </body> </html> //第二部分代碼://非共享閉包測試 function constfunc(v){return function(){ //返回一個匿名數組return v; //返回才外部變量 v, }; }var funcs = []; for(var i=0; i<10;i++)funcs[i] = constfunc(i); for(i=0;i<funcs.length;i++)console.log(funcs[i]()); //在funcs數組中保存的是匿名函數,可通過保存函數的變量后加"()"來執行匿名函數,
                   //獲取匿名函數中的v的值
//輸出:0 1 2 3 4 5 6 7 8 9 由于每次i的值被constfunc函數中的v所存儲,注意是每次循環都是重新調用,因而能存到不同的內存空間//共享閉包測試 function constfunc2(){var funcs = [];for(var i=0; i<10;i++)funcs[i] = function(){ return i;};return funcs; } var funcs = constfunc2();console.log(funcs[0]()); console.log(funcs[3]()); console.log(funcs[7]()); console.log(funcs[9]()); //輸出: 10 10 10 10
//原因:
//由于這個i在同一次函數調用中,同一個變量中(內存地址不變),
//所以當循環執行完i的值為10,在console.log()中的調用每次得到的都是同一個地址上的值,也就是10;

?

轉載于:https://www.cnblogs.com/ctsch/p/6910457.html

總結

以上是生活随笔為你收集整理的JavaScript中闭包实现的私有属性的getter()和setter()方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产女女做受ⅹxx高潮 | 日韩精品在线免费看 | 日本人做爰全过程 | 亚洲精品乱码久久久久久蜜桃图片 | 精品欧美一区二区精品久久 | 久久久久久久 | 国产呻吟av | 日韩精品自拍 | 特级毛片www | 亚洲桃色av | 亚欧美色图 | 成人av免费 | 黄色aaa视频 | 日韩在线观看免费 | 欧美整片在线观看 | 国产人妻精品一区二区三区不卡 | 男同志毛片特黄毛片 | 午夜婷婷丁香 | 亚洲日本国产精品 | 亚洲av无码国产精品久久久久 | 国产999精品| 日韩免费观看一区二区 | 手机免费看av | 性活交片大全免费看 | 午夜大片在线观看 | 一卡二卡三卡四卡 | 天天精品 | 深夜免费在线视频 | 公侵犯人妻一区二区 | 国产91精品ai换脸 | 色欧美日韩 | 国产综合激情 | 日本一区二区在线观看视频 | 欧美成人精品在线 | 国产乱来| www.猫咪av.com| 尤物在线视频 | 99热在线观看免费精品 | 久久久精品综合 | 香蕉视频在线观看www | 国产一卡二卡三卡 | 波多野结衣亚洲 | 老外一级片 | 1级黄色大片儿 | 91蜜桃| 中文字幕在线播放视频 | 亚洲精品一区二区三区不卡 | 亚洲乱亚洲乱妇 | 黄色免费在线视频 | 伊人久久久久噜噜噜亚洲熟女综合 | 成熟妇人a片免费看网站 | caoporn视频在线 | 欧美暧暧视频 | 日韩中文字幕av电影 | 午夜寂寞视频 | 国产亚洲一区在线 | 农村村妇真实偷人视频 | 国产区久久 | 欧洲成人在线 | 开心激情播播网 | 日日舔夜夜摸 | 色www亚洲国产张柏芝 | 黄网在线免费看 | 亚州色图欧美色图| 樱花动漫无圣光 | 玖玖爱免费视频 | 日本理伦片午夜理伦片 | 99国产精品99久久久久久 | 奇米网狠狠干 | 好看的毛片 | 久久精品店 | 人人妻人人澡人人爽人人精品 | 玖玖在线免费视频 | av手机网站 | 日本精品一区二区 | 性欧美18—19sex性高清 | 天天摸日日摸 | 欧美xxxx免费虐 | 西西人体做爰大胆gogo直播 | 日韩系列在线 | 嫩草影院一区二区三区 | 欧洲自拍偷拍 | 精品日韩av| 亚洲a级片 | 伊人久久大香线蕉 | 性xxxx另类xxⅹ | 久久精品国产亚洲AV熟女 | 欧美精品一二 | 99久久久无码国产精品性波多 | 婷婷的五月天 | 中文字幕在线观看高清 | 黄色国产在线观看 | 最近高清中文在线字幕在线观看 | 亚洲国产精品va在线看黑人 | 国产午夜伦理 | 亚洲资源av | 美女屁股眼视频免费 | 99视频免费看 | 亚洲爆乳无码精品aaa片蜜桃 |