亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文帶你理解JS中的原型和原型鏈

 更新時間:2023年07月31日 11:56:46   作者:風衣怒馬少年郎  
在學習JavaScript中的繼承機制時,我們常常會遇到原型和原型鏈這兩個概念,在初學階段,不理解這些概念很容易陷入迷茫,甚至會導致學習 JS 的路程變得曲折,本文將介紹JavaScript原型和原型鏈的概念、設計思想以及相關的使用方法,需要的朋友可以參考下

什么是原型?

JavaScript 是一門基于對象的語言,每個對象都有一個原型(prototype),原型是一個對象或 null 值,它定義了該對象所具有的屬性和方法。當讀取一個對象的屬性或執(zhí)行一個對象的方法時,如果當前對象本身沒有這個屬性或方法,那么 JavaScript 就會從該對象的原型中查找這個屬性或方法,并遞歸查找到其原型鏈上的所有對象,直到找到該屬性或方法為止。

在 JavaScript 中,每個函數對象都有一個 prototype 屬性,該屬性指向該函數的原型對象。當使用 new 操作符創(chuàng)建一個對象時,該對象的原型就被設置為構造函數的 prototype 屬性的值。例如:

function Person(name) {
  this.name = name;
}
var person1 = new Person("李三");
// person1 的原型是 Person.prototype
console.log(person1.__proto__ === Person.prototype); // 輸出:true

什么是原型鏈?

JavaScript 的對象之間不是完全獨立的關系,它們之間是通過原型鏈(prototype chain)相互關聯(lián)的。原型鏈指的是對象之間的一種繼承關系,每個對象都有一個原型對象,而原型對象也可能有自己的原型,這樣一直遞歸下去,就形成了原型鏈。

當讀取一個對象的屬性或執(zhí)行一個對象的方法時,如果該對象本身沒有這個屬性或方法,JavaScript 就會沿著該對象的原型鏈向上查找,直到找到該屬性或方法為止。如果到達了原型鏈的頂端還沒有找到該屬性或方法,則返回 undefined。

function Person(name) {
  this.name = name;
}
Person.prototype.sayHello = function() {
  console.log(`Hello, my name is ${this.name}`);
};
function Student(name, grade) {
  Person.call(this, name);
  this.grade = grade;
}
// 繼承了 Person 的屬性和方法
Student.prototype = Object.create(Person.prototype);
// 在 Student.prototype 上添加自己的屬性和方法
Student.prototype.study = function() {
  console.log(`${this.name} is studying in grade ${this.grade}`);
};
var student1 = new Student("李三", 3);
student1.sayHello(); // 輸出:Hello, my name is 李三
student1.study(); // 輸出:李三 is studying in grade 3

在上面的例子中,我們定義了兩個構造函數 PersonStudent,并通過 Student.prototype = Object.create(Person.prototype); 實現了 Student 對象繼承自 Person 對象的屬性和方法。當我們調用 student1.sayHello() 方法時,JavaScript 沿著該對象的原型鏈向上查找,找到了 Person.prototype 中的 sayHello() 方法。當我們調用 student1.study() 方法時,則直接在 Student.prototype 中查找到了該方法。

總結

通過本文的介紹,我們可以明確 JavaScript 中原型和原型鏈的概念以及使用方法。理解原型和原型鏈的設計思想,可以幫助我們更好地理解 JavaScript 的對象模型,從而更好地編寫高質量的代碼

到此這篇關于一文帶你理解JS中原型和原型鏈的文章就介紹到這了,更多相關JS原型和原型鏈內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 學習JavaScript設計模式(鏈式調用)

    學習JavaScript設計模式(鏈式調用)

    這篇文章主要帶領大家學習JavaScript設計模式,其中重點介紹鏈式調用,感興趣的小伙伴們可以參考一下
    2015-11-11
  • JS操作JSON要領詳細總結

    JS操作JSON要領詳細總結

    JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON數據不須要任何特殊的 API 或工具包,下面與大家分享下JSON操作的相關知識
    2013-08-08
  • JS報錯Uncaught?TypeError:?XXX?is?not?a?function的解決方法

    JS報錯Uncaught?TypeError:?XXX?is?not?a?function的解決方法

    這篇文章主要給大家介紹了關于JS報錯Uncaught?TypeError:?XXX?is?not?a?function的解決方法,本來好好的,突然就出現的錯誤,不過這并不是什么難解決的錯誤,需要的朋友可以參考下
    2023-08-08
  • 手把手教你用js插入HTML元素

    手把手教你用js插入HTML元素

    JavaScript提供了豐富的屬性操作方法,用于操作各種HTML元素,下面這篇文章主要給大家介紹了關于用js插入HTML元素的相關資料,文章通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 面向JavaScript入門初學者的二叉搜索樹算法教程

    面向JavaScript入門初學者的二叉搜索樹算法教程

    二叉搜索樹則是二叉樹的一種,但它只允許你在左側節(jié)點儲存比父節(jié)點小的值,右側只允許儲存比父節(jié)點大的值,這篇文章主要給大家介紹了關于JavaScript二叉搜索樹算法的相關資料,需要的朋友可以參考下
    2021-09-09
  • javascript性能優(yōu)化之事件委托實例詳解

    javascript性能優(yōu)化之事件委托實例詳解

    這篇文章主要介紹了javascript性能優(yōu)化之事件委托用法,結合實例形式對比分析了JavaScript中事件委托的具體用法與優(yōu)點,需要的朋友可以參考下
    2015-12-12
  • BOM系列第三篇之定時器應用(時鐘、倒計時、秒表和鬧鐘)

    BOM系列第三篇之定時器應用(時鐘、倒計時、秒表和鬧鐘)

    這篇文章主要介紹了BOM系列第三篇之定時器應用(時鐘、倒計時、秒表和鬧鐘) 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • JavaScript定時器制作彈窗小廣告

    JavaScript定時器制作彈窗小廣告

    這篇文章主要為大家詳細介紹了JavaScript定時器制作一個彈窗小廣告,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JavaScript實現的浮動層框架用法實例分析

    JavaScript實現的浮動層框架用法實例分析

    這篇文章主要介紹了JavaScript實現的浮動層框架用法,以實例形式分析了JavaScript實現可關閉的半透明浮動層相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 移動端觸摸滑動插件swiper使用方法詳解

    移動端觸摸滑動插件swiper使用方法詳解

    這篇文章主要為大家詳細介紹了移動端觸摸滑動插件swiper的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論