成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺談在JS中使用Object的watch方法監(jiān)控對(duì)象屬性

noONE / 2480人閱讀

摘要:對(duì)其的解釋為概述監(jiān)視一個(gè)對(duì)象的某個(gè)屬性是否發(fā)生變化在該屬性變化時(shí)立即觸發(fā)指定的回調(diào)函數(shù)語(yǔ)法參數(shù)想要監(jiān)視值是否發(fā)生變化的指定對(duì)象的某個(gè)屬性的屬性名稱當(dāng)指定的屬性發(fā)生變化時(shí)執(zhí)行的回調(diào)函數(shù)在內(nèi)查看其聲明如下可以看到這兩個(gè)方法是只針對(duì)內(nèi)核的瀏覽器使

MDN 對(duì)其的解釋為:

概述:
    監(jiān)視一個(gè)對(duì)象的某個(gè)屬性是否發(fā)生變化,在該屬性變化時(shí)立即觸發(fā)指定的回調(diào)函數(shù).
語(yǔ)法:
    object.watch(prop, handler)
參數(shù):
    prop
    想要監(jiān)視值是否發(fā)生變化的指定對(duì)象的某個(gè)屬性的屬性名稱
    handler
    當(dāng)指定的屬性發(fā)生變化時(shí)執(zhí)行的回調(diào)函數(shù)

在 DHTML.js內(nèi)查看其聲明如下:


可以看到這兩個(gè)方法是只針對(duì) Gecko 內(nèi)核的瀏覽器使用的(FF 是使用的 Gecko 內(nèi)核).
wacth 方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是一個(gè)字符串,代表需要監(jiān)視的屬性名,第二個(gè)參數(shù)是個(gè)回調(diào)函數(shù)
unwatch 方法只有一個(gè)參數(shù),代表需要取消監(jiān)視的屬性名.

使用舉例:

var o = {p:1};
o.watch("p", function (id, oldValue, newValue) {
    console.log("o."+id +" 由 "+oldValue +" 變?yōu)?"+newValue);
    return newValue;//注意點(diǎn)
});
o.p = 2;
o.p = 3;
delete o.p;
o.p = 4;

輸出結(jié)果為:

這里需要注意的是回調(diào)函數(shù)必須返回一個(gè)值,返回的值會(huì)覆蓋原有的值(若無(wú)返回值默認(rèn)返回的是 undefined),可以返回新值

使用watch 方法來(lái)監(jiān)視對(duì)象的屬性

//聲明一個(gè)類
Person = function (name, age) {
    this.watch("age",Person.prototype._isValidAssignment);
    this.watch("name",Person.prototype._isValidAssignment);
    this.name = name;
    this.age = age;
};

Person.prototype.toString = function () {
    return this.name + " , " + this.age;
};
//定義語(yǔ)義上的私有方法
Person.prototype._isValidAssignment = function(id,oldVale,newValue){
    if(id == "name" && (!newValue || newValue.length > 30)){
        throw new RangeError("不合法的名字 "+ this);
    }
    if(id == "age" && (newValue <0 || newValue >200)){
        throw new RangeError("不合法的年齡 "+ this);
    }
    return newValue;//重點(diǎn),必須返回
}

will = new Person("will",29);
console.log(will);

try{
    will.name = "";
}catch(e){
    console.log(e);
}

try{
    will.age = -4;
}catch(e){
    console.log(e);
}

輸出結(jié)果如下:

最后引入 MDN 的一段描述與注意事項(xiàng)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86047.html

相關(guān)文章

  • 淺談Vue計(jì)算屬性computed實(shí)現(xiàn)原理

    摘要:雖然計(jì)算屬性在大多數(shù)情況下更合適,但有時(shí)也需要一個(gè)自定義的偵聽(tīng)器。當(dāng)某個(gè)屬性發(fā)生變化,觸發(fā)攔截函數(shù),然后調(diào)用自身消息訂閱器的方法,遍歷當(dāng)前中保存著所有訂閱者的數(shù)組,并逐個(gè)調(diào)用的方法,完成響應(yīng)更新。 雖然目前的技術(shù)棧已由Vue轉(zhuǎn)到了React,但從之前使用Vue開(kāi)發(fā)的多個(gè)項(xiàng)目實(shí)際經(jīng)歷來(lái)看還是非常愉悅的,Vue文檔清晰規(guī)范,api設(shè)計(jì)簡(jiǎn)潔高效,對(duì)前端開(kāi)發(fā)人員友好,上手快,甚至個(gè)人認(rèn)為在很多...

    laznrbfe 評(píng)論0 收藏0
  • 做面試不倒翁:淺談 Vue computed 實(shí)現(xiàn)原理

    摘要:當(dāng)某個(gè)屬性發(fā)生變化,觸發(fā)攔截函數(shù),然后調(diào)用自身消息訂閱器的方法,遍歷當(dāng)前中保存著所有訂閱者的數(shù)組,并逐個(gè)調(diào)用的方法,完成響應(yīng)更新。 編者按:我們會(huì)不時(shí)邀請(qǐng)工程師談?wù)動(dòng)幸馑嫉募夹g(shù)細(xì)節(jié),希望知其所以然能讓大家在面試有更出色表現(xiàn)。也給面試官提供更多思路。 showImg(https://segmentfault.com/img/bVbgYyU?w=1200&h=600); 雖然目前的技術(shù)...

    Anonymous1 評(píng)論0 收藏0
  • 細(xì)談在HTML使用JavaScript

    摘要:前言是瀏覽器的內(nèi)置腳本語(yǔ)言。避免,在結(jié)構(gòu)生成之前調(diào)用節(jié)點(diǎn),而產(chǎn)生錯(cuò)誤 前言 JavaScript是瀏覽器的內(nèi)置腳本語(yǔ)言。當(dāng)網(wǎng)頁(yè)中嵌入了JavaScript腳本,瀏覽器加載網(wǎng)頁(yè)時(shí),就會(huì)執(zhí)行腳本,從而操作瀏覽器,實(shí)現(xiàn)各種動(dòng)態(tài)效果 JavaScript代碼嵌入網(wǎng)頁(yè)的方法 1、元素直接嵌入代碼 function sayHello() { alert(hello!); ...

    eternalshallow 評(píng)論0 收藏0
  • 細(xì)談在HTML使用JavaScript

    摘要:前言是瀏覽器的內(nèi)置腳本語(yǔ)言。避免,在結(jié)構(gòu)生成之前調(diào)用節(jié)點(diǎn),而產(chǎn)生錯(cuò)誤 前言 JavaScript是瀏覽器的內(nèi)置腳本語(yǔ)言。當(dāng)網(wǎng)頁(yè)中嵌入了JavaScript腳本,瀏覽器加載網(wǎng)頁(yè)時(shí),就會(huì)執(zhí)行腳本,從而操作瀏覽器,實(shí)現(xiàn)各種動(dòng)態(tài)效果 JavaScript代碼嵌入網(wǎng)頁(yè)的方法 1、元素直接嵌入代碼 function sayHello() { alert(hello!); ...

    yacheng 評(píng)論0 收藏0
  • 2019前端面試題匯總(主要為Vue)

    摘要:畢業(yè)之后就在一直合肥小公司工作,沒(méi)有老司機(jī)沒(méi)有技術(shù)氛圍,在技術(shù)的道路上我只能獨(dú)自摸索。于是乎,我果斷辭職,在新年開(kāi)工之際來(lái)到杭州,這里的互聯(lián)網(wǎng)公司應(yīng)該是合肥的幾十倍吧。。。。 畢業(yè)之后就在一直合肥小公司工作,沒(méi)有老司機(jī)、沒(méi)有技術(shù)氛圍,在技術(shù)的道路上我只能獨(dú)自摸索。老板也只會(huì)畫餅充饑,前途一片迷??床坏饺魏蜗MS谑呛?,我果斷辭職,在新年開(kāi)工之際來(lái)到杭州,這里的互聯(lián)網(wǎng)公司應(yīng)該是合肥的幾十...

    arashicage 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<