可以這麼理解
(1).所有的引用型別都有乙個 _proto_ (隱式原型)屬性,屬性值是乙個普通的物件
(2).所有的函式都有乙個prototype(顯示原型)屬性,屬性值是乙個普通的物件
(3).所有引用型別都有乙個constructor(建構函式)屬性,該屬性(是乙個指標)指向它的建構函式
(4).所有引用型別的 _proto_ 屬性指向它建構函式的prototype
總的來說
當乙個物件呼叫自身不存在的屬性或者方法的時候,會先去它的_proto_上查詢,
也就是它的建構函式的prototype,
如果沒有找到,
就會去它建構函式的prototype的_proto_指向的上一級函式的prototype去找(這裡就是object.prototype),
如果還找不到 ,
最後為null,這種一層一層向上查詢的關係形成了一種鏈式結構,就叫原型鏈
其實就是物件的_proto_(隱式原型) == 建構函式(父級)的 prototype
而建構函式的prototype也有自己的_proto_
// 父類class people
eat() eat something`)
}}// 子類
class student extends people
sayhi() 學號 $`)
}}// 子類
class teacher extends people
teach() 教授 $`)
}}// 例項
const xialuo = new student('夏洛', 100)
console.log(xialuo.name)
console.log(xialuo.number)
xialuo.sayhi()
xialuo.eat()
// 例項
const wanglaoshi = new teacher('王老師', '語文')
console.log(wanglaoshi.name)
console.log(wanglaoshi.major)
wanglaoshi.teach()
wanglaoshi.eat()
原生JS 原型鏈
所有物件都有自己的原型物件,由於原型物件也是物件,所以它也有自己的原型。因此,就會形成乙個 原型鏈 所有物件都繼承了object.prototype的屬性。這就是所有物件都有valueof和tostring方法的原因,因為這是從object.prototype繼承的。object.prototype...
原生JS時鐘
charset utf 8 無標題文件title id css wrap wrap ul wrap ul li 鐘錶一圈是360度,一共12個小時 每個小時之間差360 12 30度,每個小時之間差有5個格,所以每個小格之間是30 5 6度 wrap ul li nth of type 1 wrap...
原生js基礎
js常見資料型別 數字型別 字串 布林 陣列 型別轉換 number 資料 元資料是什麼格式就轉換成什麼格式的數字 parsefloat 資料 將資料轉換成帶小數點的數字 parseint 資料 將資料轉換成整數 字串 string 容器型資料型別,不可變有序 表示 使用 或 模板字串用 轉義字元 ...