国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js中對象屬性的整理

lavor / 330人閱讀

摘要:不管函數還是數據,都可以稱為某某對象的屬性。一些細節輸出結果如下可以看出,函數是有的數據屬性是創建對象時定義的,所有屬性特性都是是用定義的,默認為數據屬性,所有屬性特性默認為。訪問器屬性暫時想到的,就是通過改變該屬性改變內部多個屬性。

都知道js是面向對象的,創建了對象后,對象中保存的就是一組組名值對,值可以是數據類型或函數。不管函數還是數據,都可以稱為某某對象的屬性。再細分,屬性可以有兩個類型:數據屬性或訪問器屬性。
因此,數據屬性不要誤解為是數據的屬性類型,函數的屬性類型也是數據屬性的。

var obj = {say:function(){return this.name;},age:11};
console.log(Object.getOwnPropertyDescriptors(obj));
//輸出{value: ?, writable: true, enumerable: true, configurable: true}

數據屬性(4個):
value: 大家熟知的一樣,保存的是數據值,如果是函數,保留的就是整個函數。
writable: 是否可修改,設置為false可以巧妙定義出"私有變量"。true表示可修改,false則相反。
enumerable: 該屬性是否可被枚舉出。true表示可枚舉,false則相反。
configurable: delete屬性有沒有用,能否修改value和enumerable屬性,能否把屬性改為訪問器屬性。true就是都可以,false就是都不可以。
訪問器屬性(4個):
configurable:同上
enumerable: 同上
get:一個用于訪問其他屬性值的函數
set:一個用于修改其他屬性值的函數

對于這些屬性類型,可以修改,用defineProperty()或defineProperties();可以讀取,用getOwnPropertyDescriptor()或getOwnPropertyDescriptors()。當然,訪問器屬性只能用defineProperty()或defineProperties()創建。
一些細節:

var obj = {say:function(){return this.name;},age:11};
Object.defineProperty(obj,"name",{});
console.log(Object.getOwnPropertyDescriptors(obj));
//輸出結果如下:
//age:{value: 11, writable: true, enumerable: true, configurable: true}
//name:{value: undefined, writable: false, enumerable: false, configurable: false}
//say:{value: ?, writable: true, enumerable: true, configurable: true}

可以看出,函數say是有value的數據屬性;age是創建對象時定義的,所有屬性特性都是true;name是用defineProperty()定義的,默認為數據屬性,所有屬性特性默認為false。

var obj = {age:11};
Object.defineProperty(obj,"age",{
    configurable:false
});
Object.defineProperty(obj,"age",{
    writable:false,
    // enumerable:false,   會報錯
    // configurable:true,  會報錯
    value:12
});
Object.defineProperty(obj,"name",{
    configurable:false,     //如果不指定,默認也都是false
    value:2
});
Object.defineProperty(obj,"name",{
    // writable:false,     會報錯
    // enumerable:false,   會報錯
    // configurable:true,  會報錯
    // value:12            會報錯
});

創建時定義的屬性:修改了configurable后,其實還是可以修改writable和value屬性的。
defineProperty()定義的屬性:configurable一旦是false,以后就不可能在更改任何屬性。

訪問器屬性暫時想到的,就是通過改變該屬性改變內部多個屬性。而且,如果某屬性writable是false,訪問器屬性改變該屬性會無效。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93131.html

相關文章

  • 前端面試知識點目錄整理

    摘要:寫在前面金三銀四又到了一年一度的跳槽季相信大家都在準備自己面試筆記我也針對自己工作中所掌握或了解的一些東西做了一個目錄總結方便自己復習詳細內容會在之后一一對應地補充上去有些在我的個人主頁筆記中也有相關記錄這里暫且放一個我的面試知識點目錄大家 寫在前面: 金三銀四, 又到了一年一度的跳槽季, 相信大家都在準備自己面試筆記, 我也針對自己工作中所掌握或了解的一些東西做了一個目錄總結,方便自...

    xzavier 評論0 收藏0
  • 前端面試知識點目錄整理

    摘要:寫在前面金三銀四又到了一年一度的跳槽季相信大家都在準備自己面試筆記我也針對自己工作中所掌握或了解的一些東西做了一個目錄總結方便自己復習詳細內容會在之后一一對應地補充上去有些在我的個人主頁筆記中也有相關記錄這里暫且放一個我的面試知識點目錄大家 寫在前面: 金三銀四, 又到了一年一度的跳槽季, 相信大家都在準備自己面試筆記, 我也針對自己工作中所掌握或了解的一些東西做了一個目錄總結,方便自...

    enda 評論0 收藏0
  • 前端面試之路二(javaScript基礎整理)

    摘要:在標簽中添加屬性,本質上是跟在標簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。這個節點包括很多,比如,以及一些方法等方法。一個對象有很多,該集合名字為,里面有其他以及,里面有很多。 一、變量類型和計算 JS中使用typeof能得到哪些類型 變量類型 值類型:變量本身就是含有賦予給它的數值的,它的變量本身及保存的數據都存儲在棧的內存塊當中 引用類型:引用類型當然是分配到...

    AbnerMing 評論0 收藏0
  • js 部分學習整理

    摘要:每一個函數都有一個屬性,而這個屬性也是一個對象,就叫做原型對象,對象里有一個屬性指向了函數。所以給原型添加一個屬性,對象也會有這個屬性。 js要掌握的東西。原型 閉包聲明提升基本數據類型高階函數JSONJSONP 跨域 iframe 通信Ajax原生DOM操作(比如 逆序DOM節點)事件捕捉,捕獲,冒泡,代理Array常用函數String常用函數ES5 + ES6VUE框架部分(大部分...

    SimpleTriangle 評論0 收藏0
  • js 零碎知識整理

    摘要:,看了這樣的解釋,或許讓你更摸不著頭腦了。彈出彈出在這個例子中,只要會使用瀏覽器的朋友,都能看得出來完全繼承了的屬性和方法,否則是無法解釋的,因為在中并沒有定義屬性和,那么按常理推斷在的實例對象中,并不會出現這兩個屬性。 快速刪除尾部數組 var arr=[1,2,3,4,5]; arr.length=3; console.log(arr)//[1,2,3] 直接改變數組的length...

    liaorio 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<