亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

vue.js利用Object.defineProperty實現雙向綁定

2019-11-19 17:13:25
字體:
來源:轉載
供稿:網友

Object.defineProperty這個方法了不起啊,vue.js是通過它實現雙向綁定的。。而且Object.observe也被草案發起人撤回了。。所以defineProperty更有必要了解一下了。

幾行代碼看他怎么用

var a= {}Object.defineProperty(a,"b",{ value:123})console.log(a.b);//123

很簡單,它接受三個參數,而且都是必填的。。

傳入參數

第一個參數:目標對象
第二個參數:需要定義的屬性或方法的名字。
第三個參數:目標屬性所擁有的特性。(descriptor)

前兩個參數不多說了,一看代碼就懂,主要看第三個參數descriptor,看看有哪些取值

descriptor

他又以下取值,我們簡單認識一下,后面例子,挨個介紹。

  • value:屬性的值(不用多說了)
  • writable:如果為false,屬性的值就不能被重寫,只能為只讀了
  • configurable:總開關,一旦為false,就不能再設置他的(value,writable,configurable)
  • enumerable:是否能在for...in循環中遍歷出來或在Object.keys中列舉出來。
  • get:一會細說
  • set:一會細說

descriptor 默認值

我們再看看第一個例子

var a= {}Object.defineProperty(a,"b",{ value:123})console.log(a.b);//123

我們只設置了 value,別的并沒有設置,但是第一次的時候 可以簡單的理解為(暫時這樣理解)它會默認幫我們把writable,configurable,enumerable。都設上值,而且值還都是false。。也就是說,上面代碼和下面是等價的的(僅限于第一次設置的時候)。

var a= {}Object.defineProperty(a,"b",{ value:123, writable:false, enumerable:false, configurable:false})console.log(a.b);//123

以上非常重要哦。。并且以上理解對set 和 get 不起作用哦

configurable

總開關,第一次設置 false 之后,,第二次什么設置也不行了,比如說

var a= {}Object.defineProperty(a,"b",{ configurable:false})Object.defineProperty(a,"b",{ configurable:true})//error: Uncaught TypeError: Cannot redefine property: b

就會報錯了。

注意上面講的默認值。。。如果第一次不設置它會怎樣。。會幫你設置為false。。所以。。第二次。再設置他會怎樣?。。對嘍,,會報錯

writable

如果設置為fasle,就變成只讀了。

var a = {}; Object.defineProperty(o, "b", {  value : 123, writable : false });console.log(a.b); // 打印 37a.b = 25; // 沒有錯誤拋出(在嚴格模式下會拋出,即使之前已經有相同的值)console.log(o.a); // 打印 37, 賦值不起作用。

enumerable

屬性特性 enumerable 定義了對象的屬性是否可以在 for...in 循環和 Object.keys() 中被枚舉。

var a= {}Object.defineProperty(a,"b",{ value:3445, enumerable:true})console.log(Object.keys(a));// 打印["b"]

改為false

var a= {}Object.defineProperty(a,"b",{ value:3445, enumerable:false //注意咯這里改了})console.log(Object.keys(a));// 打印[]

for...in 類似,不贅述了

set 和 get

在 descriptor 中不能同時設置訪問器(get 和 set)和 wriable 或 value,否則會錯,就是說想用 get 和 set,就不能用 writable 或 value 中的任何一個。

set 和 get,他倆干啥用的的。

var a= {}Object.definePrope`請輸入代碼`rty(a,"b",{ set:function(newValue){ console.log("你要賦值給我,我的新值是"+newValue) }, get:function(){ console.log("你取我的值") return 2 //注意這里,我硬編碼返回2 }})a.b =1 //打印 你要賦值給我,我的新值是1console.log(a.b) //打印 你取我的值     //打印 2 注意這里,和我的硬編碼相同的

簡單來說,這個 “b” 賦值或者取值的時候會分別觸發 set 和 get 對應的函數。

這就是實現observe的關鍵啊。

下一篇,我會分析vue的observe的實現源碼,聊聊自己如何一步一步實現$watch。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚州成人av在线| 少妇高潮久久77777| 欧美精品电影免费在线观看| 日本a级片电影一区二区| 久久精品夜夜夜夜夜久久| 久久久日本电影| 欧美一乱一性一交一视频| 国产精品普通话| 成人精品久久一区二区三区| 亚洲视频电影图片偷拍一区| 成人精品在线观看| 亚洲xxx大片| 欧美在线视频观看| 69视频在线播放| 国产精品扒开腿做爽爽爽视频| 欧美一级电影久久| 亚洲国产精品悠悠久久琪琪| 97久久精品人人澡人人爽缅北| 国产91成人video| 久久久久国产精品免费网站| 91在线视频成人| 久久亚洲精品网站| 欧美日韩中国免费专区在线看| 欧美资源在线观看| 日韩av电影在线网| 欧美激情综合色综合啪啪五月| 日本久久久久久久久久久| 久久久视频精品| 欧美日韩高清区| 成人久久精品视频| 国产婷婷97碰碰久久人人蜜臀| 欧美久久精品午夜青青大伊人| 国产精品99免视看9| 国产精品一区专区欧美日韩| 亚洲国产成人在线视频| 怡红院精品视频| 午夜免费久久久久| 日韩国产欧美精品在线| 亚洲欧洲美洲在线综合| 中文字幕欧美日韩va免费视频| 中文字幕日韩高清| 伊人激情综合网| 亚洲精品有码在线| 国产视频一区在线| 亚洲精品黄网在线观看| 欧美日韩国产成人在线观看| 亚洲国产精品推荐| 91亚洲国产成人精品性色| 久久福利视频网| 欧美性色19p| 国产91成人video| 欧美激情一二区| 91精品久久久久久久久中文字幕| 欧美在线观看一区二区三区| 欧美性猛交xxxx黑人| 国产精品爽爽爽爽爽爽在线观看| 国产精品久久久久久久天堂| 国产精品av在线播放| 亚洲少妇激情视频| 97国产在线视频| 日韩在线视频导航| 91成人在线播放| 欧美日韩在线视频观看| 久久免费少妇高潮久久精品99| 日韩欧美在线视频日韩欧美在线视频| 日韩中文字幕久久| 久久久精品一区二区三区| 国产精品日日做人人爱| 久久久久99精品久久久久| 91精品国产自产在线| 性色av一区二区三区在线观看| 亚洲一区二区三区四区在线播放| 综合欧美国产视频二区| 日韩欧美成人精品| 亚洲老头同性xxxxx| 亚洲在线观看视频网站| 成人免费视频在线观看超级碰| 亚洲人成电影网站色www| 久久99久国产精品黄毛片入口| 狠狠久久五月精品中文字幕| 亚洲精品欧美极品| 91av在线国产| 亚洲精品一二区| 亚洲精品视频免费在线观看| 九九久久精品一区| 美女扒开尿口让男人操亚洲视频网站| 国产欧美日韩精品在线观看| 亚洲人成自拍网站| 一个人看的www欧美| 国产精品影院在线观看| 97香蕉超级碰碰久久免费软件| 欧美另类高清videos| 成人午夜在线影院| 美日韩精品视频免费看| 欧美二区乱c黑人| 在线观看久久久久久| 欧美精品在线视频观看| 成人黄色午夜影院| 福利一区福利二区微拍刺激| 尤物yw午夜国产精品视频明星| 美女视频黄免费的亚洲男人天堂| 国产精品va在线播放| 91精品国产色综合| 国产专区欧美专区| 在线亚洲午夜片av大片| 都市激情亚洲色图| 日韩精品免费在线视频观看| 亚洲性生活视频在线观看| 欧美天天综合色影久久精品| 亚洲深夜福利视频| 日韩av手机在线看| 91久久精品一区| 国产精品免费网站| 欧美成人精品三级在线观看| 久久精品国亚洲| 国产一区在线播放| 日本aⅴ大伊香蕉精品视频| 欧美丝袜第一区| 久久久久久久色| 国产欧亚日韩视频| 国产精品三级在线| 国产成人精品视| 亚洲欧美激情视频| 少妇高潮久久77777| 久久人人爽人人爽人人片av高请| 欧美成年人网站| 国产精品美女在线观看| 国产日韩精品在线观看| 精品香蕉一区二区三区| 欧美日韩另类在线| 92裸体在线视频网站| 久久影视免费观看| zzjj国产精品一区二区| 日本成人在线视频网址| 亚洲一级一级97网| 久热在线中文字幕色999舞| 精品亚洲国产成av人片传媒| 中文国产成人精品| 亚洲国产第一页| xxxxxxxxx欧美| 欧美一区深夜视频| 亚洲精品久久久久国产| 日韩中文字幕av| 亚洲女人被黑人巨大进入| 国产精品青青在线观看爽香蕉| 成人国产精品av| 成人黄色免费片| 2019国产精品自在线拍国产不卡| 亚洲自拍中文字幕| 久久久国产一区| 国产精品www| 色妞在线综合亚洲欧美| 国产精品综合不卡av| 国产精品成人国产乱一区| 北条麻妃在线一区二区| 国产精品一区二区久久久| 亚洲一区二区日本| 亚洲a成v人在线观看| 国模视频一区二区| 国产91精品久久久久久久| 欧美一级bbbbb性bbbb喷潮片| 尤物99国产成人精品视频| 国产精品欧美日韩| 欧美激情在线观看|