前言回顧:
七種資料型別:number string bool symbol null undefined object
五個falsy值:null undefined 0 nan ''(空字串)
let obj =
物件//定義:鍵值對的集合,無序的資料集合
let obj = new object() //這種是上面一種的正規寫法,但太麻煩,沒人用
console.log()
重點中,name、age就是key,每個key都是物件的屬性名,frank,18就是屬性值。
//所有屬性名會自動變成字串✨
let obj = ;
object.leys(obj) //這種寫法可以得出obj的所有key!!
==>["1","100","225","3.2","0.01","0.234"] //結果!!注意1e2變成了100,js的bug之處
如何用變數做屬性名?
let p1 = 'name'
let obj = 這樣寫,屬性名為』p1'
let obj = 這樣寫,屬性名為'name'
隱藏屬性
綠框標出來的就是傳說中的隱藏屬性
js中每個物件都有乙個隱藏屬性!!這個隱藏屬性儲存著其共有屬性組成的物件的位址!!
共有屬性組成的物件叫做原型,也就是說隱藏屬性儲存著原型的位址。看下面乙個 嘗試理解——
obj是空的,但obj.tostring()居然不報錯,因為obj的隱藏屬性對應的物件上有tostring()
1、刪除屬性
!!注意 delete 是等價於delete obj['***']的,兩種寫法都可以,一樣的。
2、檢視所有屬性(讀屬性)
每個物件都有原型
物件的原型也是物件
檢視屬性值
重中之重
摘自飢人谷課程,方方老師的ppt
摘自飢人谷課程,方方老師的ppt
題目
✨批量賦值✨
無法通過自身修改或增加共有屬性
let obj = {},obj2 = {}//共有tostring
obj.tostring = '***' //只會在改obj本身屬性
obj2.tostring還是在原型上
若偏要修改或增加原型上的屬性
obj.__proto__.tostring = '***' //不推薦用__proto__
object.prototype.tostring = '***'
一般來說,不要修改原型,會引起很多問題
修改隱藏屬性
不推薦使用__proto__
let obj =
let obj2 =
let common =
obj.__proto__ = common
obj2.__proto__ = common
推薦使用object.create
let obj = object.create(common)
obj.name = 'frank'
let obj2 = object.create(common)
obj2.name = 'jack'
規範意思是,要改就一開始就改,別後來再改
'name' in obj 和 obj.hasownproperty有什麼區別?如圖:hasownproperty是判斷自有屬性的,就是除了_proto_以外的自己的屬性裡有沒有的,屬於第一層的。而 in 是判斷所有層,所有屬性裡有沒有這個屬性的。
刪
delete obj['name']
'name' in obj //false
obj.hasownproperty('mame') //false
查
object.keys(obj)
console.dir(obj)
obj['name']
obj.name //記住這裡的name 是字串!!!
obj[name] //記住這裡的name是變數!!
改
改自身 obj['name'] = 'jack'
批量改自身 object.assign(obj,)
改共有屬性 obj.__proto__['tostring'] = '***'
改共有屬性 object.prototype['tostring'] = '***'
改原型 obj.__proto__ = common
改原型 let obj = object.create(common)
增:基本同上:已有屬性則改,無則增。 js判斷物件是否為空
在php中空陣列跟和空物件,在進行布林值驗證是是false,但是js中陣列或物件不管是否有屬性或值存在統統任務是true。在編寫程式的過程中這是很蛋疼的。為了解決這個問題只能自己寫方法進行判斷。下面總結一下幾種方法 用es6的keys方法搞定 function isempty obj 利用json轉...
js判斷物件是否為空
1.將json物件轉化為json字串,再判斷該字串是否為 var data var b json.stringify data alert b true 2.for in 迴圈判斷 var obj var b function return true alert b true 3.jquery的is...
js判斷物件是否為空
1 使用es6提供的 object.keys obj 方法 object.keys 返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含 symbol 屬性 的鍵名。object.keys obj length 0 obj.constructor object true表示為空物件,fal...