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變數賦值
- shell 變數賦值問題變數賦值
- 物件賦值轉換物件賦值
- JS解構賦值JS賦值
- JavaScript 物件解構賦值JavaScript物件賦值
- 如何解決自增列賦值的問題賦值
- jquery取值和賦值(包含部分是原生js的取值和賦值)jQuery賦值JS
- Vue.js - 陣列和物件的賦值動態變化 & 克隆Vue.js陣列物件賦值
- js 利用||和&&賦值小技巧JS賦值
- 【ES6基礎】解構賦值(destructuring assignment)賦值Struct
- 複製物件重新賦值不改變原物件物件賦值
- 陣列未被賦值時其值為多少?陣列賦值
- 請教一個切片遞迴賦值的問題遞迴賦值
- vector訪問與賦值賦值
- web中,利用反射給物件賦值Web反射物件賦值
- 物件屬性值賦給變數物件變數
- Javascript 解構賦值,將屬性/值從物件/陣列中取出,賦值給其他變數JavaScript賦值物件陣列變數
- JS 中賦值語句的祕密JS賦值
- 常被新手忽略的值賦值和引用賦值(偏redux向)賦值Redux
- 基礎知識梳理~ES6 解構賦值賦值
- 變數的賦值 指標間接賦值變數賦值指標
- 基礎問題不簡單 | 怎麼合理使用值物件,讓你的程式碼更清晰、更安全?物件
- JS中的變數賦值深入理解JS變數賦值
- JDK動態代理物件與被代理物件地址值問題JDK物件
- Verilog連續賦值、過程賦值、過程連續賦值總結賦值
- 【web前端基礎 | JS基礎】物件Web前端JS物件
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- 詳解 Diff 演算法以及迴圈要加 key 值問題演算法
- js中 函式引數的 傳值/傳引用 問題JS函式
- PHP 對 Redis key 值的操作PHPRedis
- vue物件拷貝,解決由於引用賦值修改原物件的方法Vue物件賦值
- C++特點,物件的概念,初始化和賦值C++物件賦值
- Python - 物件賦值、淺拷貝、深拷貝的區別Python物件賦值
- 前端定義一個物件的時候,key值如何設定為數字,並抽成常量前端物件
- java map存取重複值、幼兒園分班問題、map按key自動排序問題Java排序
- 使用clarinet(browser&node.js)解析重複key值的json字串Node.jsJSON字串