js基礎-20-js物件賦值時的key值問題
一,在定義時,物件的屬性名可以是包含空字串在內的任何字串。
二,當給物件新增屬性時,屬性名key也可以是其他資料型別
1,當key是陣列時:轉化為逗號分割的字串作為key:
var a={}
var arr1=[22,2,3]
var arr2=[3,2,5]
a[arr1]='123'
a[arr2]='456'
console.log(a)
於是當一個是字串,一個是陣列時,會有這種情況發生:
var a={}
var str1='3,2,5'
var arr2=[3,2,5]
a[str1]='123'
a[arr2]='456'
console.log(a)
第一個被覆蓋了,這裡只要知道,陣列作為key時,是轉化為逗號分割的字串就行,因為兩者值一樣,自然後者覆蓋前者。
2,當key是物件時,無論物件的內容是啥,都會轉化為‘【object Object】’作為key值,也就是說,無論是啥物件,最後一個賦值必然覆蓋之前的物件(還會覆蓋【object Object】這個字串)
var a={}
var str='[object Object]'
var obj1={
name:'zhangsan'
}
var obj2={
age:14
}
a[str]='也是'
a[obj1]='123'
a[obj2]='456'
console.log(a)
3,當是其他特殊值時:
var a={}
var key1=null
var key2=undefined
var key3=function (){console.log('a')}
var key4=1
var key5=NaN
a[key1]='null'
a[key2]='undefined'
a[key3]='function'
a[key4]='1'
a[key5]='NaN'
console.log(a)
三,總結:實際上是把它們呼叫toString()方法轉化為字串了,並且因為null和undefined沒有toString()方法,所以他倆用的是String()函式
至於為什麼所有的物件,無論內容是啥,都是同一個?這是因為Object的原型物件上的toString方法就是那個判斷資料型別的toString方法,而也就是說所有Object的例項物件的原型鏈上,都只能呼叫這個判斷型別的toString
相關文章
- [基礎問題] 陣列賦值陣列賦值
- 問題分享:Js引用型別賦值JS型別賦值
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- vue 變數賦值同時改變的問題Vue變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用賦值語句賦值SQL變數賦值
- shell 變數賦值問題變數賦值
- 物件賦值轉換物件賦值
- stuts2的賦值問題 1賦值
- java裡面給物件賦值,慎用賦值符號(=) (轉)Java物件賦值符號
- JavaScript 物件解構賦值JavaScript物件賦值
- JS解構賦值JS賦值
- JAVA 物件引用,以及物件賦值Java物件賦值
- 如何解決自增列賦值的問題賦值
- golang 實現多型的賦值問題Golang多型賦值
- jquery取值和賦值(包含部分是原生js的取值和賦值)jQuery賦值JS
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-使用SELECT INTO賦值SQL變數賦值
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-對BOOLEAN變數賦值SQL變數賦值Boolean
- 關於值物件的驗證的問題物件
- vector訪問與賦值賦值
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- 複製物件重新賦值不改變原物件物件賦值
- 物件屬性值賦給變數物件變數
- web中,利用反射給物件賦值Web反射物件賦值
- JavaScript 之物件拷貝與賦值JavaScript物件賦值
- 給物件引用變數賦值(轉)物件變數賦值
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- java值物件的傳輸問題請教Java物件
- 關於實體與值物件的問題物件
- 請教一個切片遞迴賦值的問題遞迴賦值
- js 利用||和&&賦值小技巧JS賦值
- php變數賦值給jsPHP變數賦值JS
- Vue.js - 陣列和物件的賦值動態變化 & 克隆Vue.js陣列物件賦值
- 基礎知識梳理~ES6 解構賦值賦值
- 變數的賦值 指標間接賦值變數賦值指標
- JS 中賦值語句的祕密JS賦值
- Python3 基礎學習之基本數值賦值、型別轉換Python賦值型別
- 【c++】深賦值與淺賦值C++賦值
- json物件以及陣列鍵值的深度大小寫轉換問題JSON物件陣列