資料型別判斷 資料深度拷貝 this指向

2021-10-03 08:36:04 字數 2156 閱讀 4107

const father = ,

children: ,

grandson:

}}}

// 基本資料型別直接拷貝,引用資料型別直接賦值只是引用了原資料的路徑

const obj1 = json.parse(json.stringify(father))

//json深度複製,如果有屬性是function,該屬性不被複製,其他屬性正常深度複製===》可用於沒有使用fn的物件進行深度拷貝

const obj2 = object.assign(father)// 沒使用{}合併成新物件,這樣合併father===obj2

const obj3 = object.assign({}, father)// 這樣複製到乙個空{},可以實現第一層深度複製

//object.assign只能深度拷貝物件上第一層屬性,物件裡面的物件是淺拷貝===》可用於只有一層物件的拷貝

//可用遞迴方式實現深度賦值:object.prototype.tostring.call(arr)

// for in =》對於物件來說,prop是key;對於陣列,prop是索引

function deepclone(origin, target) 

const tostr = object.prototype.tostring

for (const prop in origin)

} else

deepclone(origin[prop], target[prop])

} else

}} return target

}

/*《檢測資料型別》

1、typeof:可以判斷基本資料型別(只能判斷基本型別,fn特殊判斷是fn,null判斷是obj)

2、instanceof :運算子用於檢測建構函式的 prototype 屬性是否出現在某個例項物件的原型鏈上:

object instanceof constructor ====》 instanceof array === true =>true / instanceof array === object =>false

3、constructor是通過與建構函式對比判斷資料型別(除了null和undefined,其他屬性型別都能判斷)

》undefined 和 null 沒有 constructor 屬性,所有不能用其判斷

》object.constructor === 建構函式 ===》eg:father.constructor===array =>true / father.constructor===object =>false

4、tostring():是 object 的原型方法,它能夠返回當前物件的字串表示;

*(固定)instanceof不能判斷基本資料型別;typeof不能判斷引用資料型別;

(所有資料型別)constructor都能判斷;tostring能檢測所有資料型別

hasownproperty:

》注意:const object1 = new object();object1.property1 = 42;console.log(object1.hasownproperty('property1'));

hasownproperty是為了判斷屬性直接是在物件上,而不是在原型上, 因為說不定這個物件有原型

《this指向》

function test()

function father(name, age, ***) 物件,執行完return this物件出去

this.name = name,

this.age = age,

this.*** = ***

father()// 這裡列印出來的this指向是window

const obj = {}

father.call(obj)// this指向obj

father.call(obj, '我是name', '我是age', '我是***')// 實參

判斷資料型別

typeof 如果使用typeof來判斷資料型別的話,結果如下 var num new number 123 var str new string 1223 var bool new boolean false console.log typeof 123,number typeof num,obj...

判斷資料型別

typeof 判斷基本資料型別 不能區分null object 弊端不能區分 陣列 物件 和 null console.log typeof dddd console.log typeof 12 console.log typeof true console.log typeof undefined...

資料型別判斷

可以判斷基本資料型別,它返回的資料型別的字串 返回結果只能包括number,boolean,string,function,object,undefined 但不能判斷null array,可以使用typeof判斷變數是否存在 如if typeof a undefined 但是對於一些建立的物件,它...