關於js 原生原生鏈

2022-07-02 01:21:12 字數 1220 閱讀 9468

可以這麼理解

(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 容器型資料型別,不可變有序 表示 使用 或 模板字串用 轉義字元 ...