3.typeof 和instanceof區別 1.typeof 主要用於判斷對象類型 類型有: 1.object 2.function 3.number 4.string 5.boolean 6.undefined 7.symbol =>一種標識唯一性的ID 註意:每個symbol屬性都是唯一的,任 ...
3.typeof 和instanceof區別
1.typeof
主要用於判斷對象類型
console.log(typeof null) //object console.log(typeof undefined) //undefined console.log(typeof [1,2,3]) //object console.log(typeof Boolean) //function console.log(typeof 1) //number console.log(typeof '1') //string console.log(typeof String) //function console.log(typeof boolean) //undefined console.log(typeof true) //boolean console.lig(typeof symbol) //symbol console.log(typeof Function) //function
類型有:
1.object
2.function
3.number
4.string
5.boolean
6.undefined
7.symbol =>一種標識唯一性的ID
註意:每個symbol屬性都是唯一的,任意兩個symbol都不相等
2.instanceof
instanceof 運算符用於檢測構造函數的 prototype
屬性是否出現在某個實例對象的原型鏈上。
右邊必須為一個對象
console.log(typeof null) //object console.log(typeof undefined) //undefined console.log(typeof [1,2,3]) //object console.log(typeof Boolean) //function console.log(typeof 1) //number console.log(typeof '1') //string console.log(typeof String) //function console.log(typeof boolean) //undefined console.log(typeof true) //boolean console.lig(typeof symbol) //symbol console.log(typeof Function) //function
註意:每個函數的原型鏈上都有原型,再上面都有對象
1.顯示原型 : prototype
只要創建一個新的函數,就會為該函數創建一個prototype屬性.該屬性指向函數的原型對象.所有原型對象都會自動獲得一個constructor構造函數屬性,該屬性指向prototype屬性所在函數的指針.
2.隱式原型 : __proto__
隱式原型指向創建這個對象的函數的prototype.
object.peototype.__proto__ == null
註意:通過Function.prototype.bind方法構造出來的函數沒有prototype屬性。
3.顯示原型與隱式原型的區別和聯繫
function P(){} let p1 = new P(); p1.__proto__ === P.prototype //true P.prototype // {constructor: ƒ} P.prototype.constructor === P //true P.__proto__ === Function.prototype //true
1.對象只有__proto__
屬性,這個屬性是指向他的構造函數的prototype屬性
function B(b){ this.b = b; } var b = new B('seanxiao') console.log(b)
b對象的屬性是__proto__
,指向構造函數B的prototype
,B.protptype.__proto__
指向Object.prototype
Object.protptype.__protp__
是null
而則一層一層的鏈接 關係就是原型鏈。