原型prototype
????????今天給大家淺淺的總結一下學到的prototype與__proto__;后面的問題總結是在B站看了一個學習視頻,照著老師總結下來的,眼熟的友友們請直接拿走不謝~~
????????prototype 概念:每一個構造函數天生自帶一個屬性為?prototype 對象,是一個對象數據類型,里面可以存放對應的數據 稱為顯示原型?且唯一
????????一般把方法放在原型里,屬性放在構造函數里
????????當自定義構造函數書寫完畢后,就會有 prototype 產生
????????__proto__ 概念:每一個對象天生自帶一個__proto__屬性,也是一個對象空間,指向對象所屬構造函數的prototype,稱為隱式原型
function Person() {Person.prototype.a = 100;Person.prototype.say = function(){console.log("hello");} } ? var p1 = new Person(); ? //person找不到a,則會去構造函數的prototype里找 console.log(p1.a); //100 p1.say(); // hello ? console.log(Person.prototype); //判斷一個對象是否指向了該構造函數的原型對象 console.log(Person.prototype.isPrototypeOf(p1));// true ? //創建的對象的自帶屬性__proto__ 指向構造函數的 prototype對象 console.log(p1.__proto__); ? //指向的意思就是說是同一個東西 console.log(p1.__proto__ == Person.prototype); //true console.log(p1.__proto__ === Person.prototype); //true總結
-
實例對象的__proto__是指向對應構造函數的prototype
-
在實際使用中,一般不會使用?__proto__,而是通過?__proto__訪問對應的prototype
問題1:實例對象的?__proto__?指向誰?
=> 指向所屬構造函數的 prototype
=> p1 所屬的構造函數是 Person
=> p1.__proto__?指向 Person.prototype
問題2:(構造函數)Person.prototype 的?__proto__?指向誰?
=> Person.prototype 是一個對象數據類型( Object )
=> 在 JS 內所有的 object 數據類型都是屬于 Object 這個內置構造函數的
=> 所以 Person.prototype 屬于 Object 這個內置構造函數
=> 所以 Person.prototype 的?__proto__?指向 Object.prototype
問題3:(構造函數)Person 的?__proto__?指向誰?
=> Person 是一個函數,函數本身也是一個對象,所以也有?__proto__
=> 如果Person 有父類,則指向父類的原型prototype
=> 在 JS 內,所有函數都是屬于內置構造函數 Function 的實例
=> 所以 Person.__proto__?指向 Function.prototype
問題4:Object.prototype 的?__proto__?指向誰?
=> Object.prototype 是一個對象數據類型,只要是對象,都是屬于 Object 這個內置構造函數的
=>?注意:Object.prototype 在 JS 內叫做頂級原型,不在有?__proto`__`,指向null
問題5:Object 的?__proto__?指向誰?
=> Object 是一個內置構造函數,也是一個函數,也是一個對象
=> 在 JS 內,所有的函數都是屬于內置構造函數 Function 的實例
=> Object 也是 Function 的實例
=> 所以Object.__proto__?指向 Function.prototype
問題6:Function.prototype 的?__proto__?指向誰?
=> Function.prototype 也是一個對象數據類型
=> 只要是對象數據類型都是 Object 的實例
=> 所以 Function.prototype 的?__proto__?指向 Object.prototype
問題7:Function 的?__proto__?指向誰?
=> Function 也是一個內置構造函數,也是一個函數
=> 在 JS 內,所有的函數都是屬于內置構造函數 Function 的實例
=> Function 是 自己的構造函數,自己的實例對象
=> 所以 Function 所屬的構造函數時Function
=> 所以 Function.__proto__?指向 Function.prototype
總結
以上是生活随笔為你收集整理的原型prototype的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目管理之如何控制项目进度和质量
- 下一篇: 论如何实现财务独立