摘要:表示能否修改屬性的值。對于直接在對象上定義的屬性,這個特性的默認值為。默認值為設置一個屬性的值會導致其他屬性的變化如果的有值,就不要對再設置屬性所在的對象要讀取其描述符的屬性名稱
對象定義
對象定義:無序屬性的集合,其屬性可以包含基本值、對象或函數
對象就是 鍵值對 其中值可以是數據和函數
對象方法就是對象的屬性 不過這個屬性是函數
var p = new Object() p.name = "nike" p.age = "10" p.job = "joker" p.sayName = function() { console.log(this.name) } console.log(p.age)//10 p.sayName() //nike
var p = { name: "nike", age: "10", job: "joker", sayName: function(){ console.log(this.name) } } console.log(p.job)//joker p.sayName() //nike屬性類型 數據屬性
Configurable:表示能否通過 delete 刪除屬性從而重新定義屬性,能否修改屬性的特
性,或者能否把屬性修改為訪問器屬性。像前面例子中那樣直接在對象上定義的屬性,它們的這個特性默認值為 true。
Enumerable:表示能否通過 for-in 循環返回屬性。像前面例子中那樣直接在對象上定
義的屬性,它們的這個特性默認值為 true。
Writable:表示能否修改屬性的值。像前面例子中那樣直接在對象上定義的屬性,它們的
這個特性默認值為 true。
Value:包含這個屬性的數據值。讀取屬性值的時候,從這個位置讀;寫入屬性值的時候,把新值保存在這個位置。這個特性的默認值為 undefined。
修改這 3 個值需要用 es5 的Object.defineProperty()方法
這個方法接收 3 個參數:屬性所在的對象、屬性的名字、描述符對象
描述符對象的屬性必須是:configurable enumerable writeble value
var person = {} Object.defineProperty(person, "name", { writable: true, value: "nike" }) console.log(person.name)//nike person.name = "gray" console.log(person.name)//gray
var person = {} Object.defineProperty(person, "name", { configurable: true, value: "nike" }) console.log(person.name)//nike delete person.name console.log(person.name)//undefined訪問器屬性
Configurable:表示能否通過 delete 刪除屬性從而重新定義屬性,能否修改屬性的特性,或者能否把屬性修改為數據屬性。對于直接在對象上定義的屬性,這個特性的默認值為true
Enumerable:表示能否通過 for-in 循環返回屬性。對于直接在對象上定義的屬性,這個特性的默認值為 true。
Get:在讀取屬性時調用的函數。默認值為 undefined。
Set:在寫入屬性時調用的函數。默認值為 undefined
var person = { oldname: "jac", age: "10" } Object.defineProperty(person, "newname", { get: function(){ return this.oldname }, set: function(value){ this.oldname = value } }) person.newname = "bool" console.log(person.oldname)//bool //設置一個屬性的值會導致其他屬性的變化
var person = { name: "handsome" } Object.defineProperties(person, { boy: { get: function () { return this.name + " hua" }, set: function (value) { return this.name = value } }, man: { get: function () { return this.name }, set: function (value) { return this.name = value } }, year: { value: 20 } }) console.log(person.boy)//handsome hua console.log(person.man)//handsome //如果person的name有值,就不要對name再設置 get set var descriptor = Object.getOwnPropertyDescriptor(person, "year") //屬性所在的對象、要讀取其描述符的屬性名稱 console.log(descriptor.value)//20
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84642.html
摘要:用代碼可以這樣描述安全到達國外面向過程既然說了面向對象,那么與之對應的就是面向過程。小結在這篇文章中,介紹了什么是面向對象和面向過程,以及中對象的含義。 這是 javascript 面向對象版塊的第一篇文章,主要講解對面向對象思想的一個理解。先說說什么是對象,其實這個還真的不好說。我們可以把自己當成一個對象,或者過年的時候相親,找對象,那么你未來的老婆也是一個對象。我們就要一些屬性,比...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:返回值是一個對象,如果是訪問器屬性,這個對象的屬性有和如果是數據屬性,這個對象的屬性有和。上一篇面向對象版塊之對象屬性下一篇面向對象版塊之創建對象 這是 javascript 面向對象版塊的第三篇文章,主要講解的是多個屬性的定義以及讀取屬性的特性。前面這幾章內容目的在于加深對對象的理解,這樣可以利于理解后面的原型鏈以及繼承方面的知識,或者你也可以了解一下不一樣的 javascript ...
摘要:上一篇面向對象版塊之理解對象下一篇面向對象版塊之定義多個對象屬性以及讀取屬性特性 這是 javascript 面向對象版塊的第二篇文章,主要講解的是對象的屬性,首先創建一個對象: var person = { name: Nicholas, age: 29, job: Software Engineer, sayName: function () { conso...
閱讀 2897·2021-10-26 09:49
閱讀 3231·2021-10-14 09:42
閱讀 2058·2021-09-13 10:31
閱讀 2600·2019-08-30 11:13
閱讀 2972·2019-08-29 16:31
閱讀 1086·2019-08-29 13:58
閱讀 1869·2019-08-29 12:12
閱讀 3597·2019-08-26 13:48