」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript 中的 proto 和 Constructor.prototype 有什麼不同?

JavaScript 中的 proto 和 Constructor.prototype 有什麼不同?

發佈於2024-11-11
瀏覽:942

What is the Difference Between proto and Constructor.prototype in JavaScript?

proto和constructor.prototype的差異

物件的proto屬性引用其原型對象,其中包含共享屬性和方法。相較之下,constructor.prototype 指向物件建構函式的原型屬性。

下面的範例說明了差異:

function Gadget(name, color) {
  this.name = name;
  this.color = color;
}

Gadget.prototype.rating = 3;

var newtoy = new Gadget("webcam", "black");

在本例中,newtoy.__proto__ 指向具有屬性評級的 Gadget.prototype,而 newtoy.constructor.prototype 也指向 Gadget 。原型。然而,newtoy.constructor.prototype.constructor.prototype.constructor.prototype傳回null,因為除了Object.prototype之外沒有進一步的原型。

這是因為proto是對原型對象,而constructor.prototype遵循原型鏈。當您多次造訪constructor.prototype時,您將遍歷原型鏈,直到您到達頂層Object.prototype。

在Internet Explorer中,沒有__proto__屬性。相反,您可以使用 [[Prototype]] 屬性來存取物件的原型。然而,這個屬性在標準 JavaScript 程式碼中是無法存取的。

引用原型物件可以幫助您理解 JavaScript 中的繼承層次結構,並提供在相關物件之間共享屬性和方法的機制。

版本聲明 本文轉載於:1729476318如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 為什麼 std::async Future 具有阻塞析構函式?
    為什麼 std::async Future 具有阻塞析構函式?
    為什麼要阻塞:std::async 返回的Future 的阻塞析構函數背後的原因處理非同步任務時, std: :async 傳回的future 因其阻塞行為而聞名,引發了對其必要性的質疑。為了深入研究這個設計選擇,讓我們探討導致其實現的問題和討論。 Herb Sutter 的論文「async、~fu...
    程式設計 發佈於2024-11-15
  • 如何在沒有 JavaScript 的情況下實現 CSS 中 Div 元素的居中擴充?
    如何在沒有 JavaScript 的情況下實現 CSS 中 Div 元素的居中擴充?
    使用CSS 從中心擴展Div在CSS 轉換領域,人們可能會想像div 元素從其中心軸優雅地擴展,而不是從左上角和左上角展開的預設行為。然而,如果沒有 JavaScript,這種期望的效果就會帶來挑戰。 解決方案:操縱邊距實現這種居中擴展的關鍵在於使用特定的轉換 div 的邊距公式。該技術涉及計算目標...
    程式設計 發佈於2024-11-15
  • 您可以在沒有“eval”的情況下在 JavaScript 中建立運行時命名的函數嗎?
    您可以在沒有“eval”的情況下在 JavaScript 中建立運行時命名的函數嗎?
    JavaScript 中不帶Eval 的運行時命名函數是否可以創建一個JavaScript 函數,其名稱在運行時確定,而不使用eval 或非常規的引擎特定功能?是的,現在 ECMAScript 2015 (ES6) 及更高版本可以實現這一點。 ES6 解決方案:計算屬性名稱在 ES6 中,指派給物件...
    程式設計 發佈於2024-11-15
  • 如何偵錯 PDO 連線問題:為什麼我的腳本嘗試無限期連線?
    如何偵錯 PDO 連線問題:為什麼我的腳本嘗試無限期連線?
    PDO 連線測試:偵錯連線問題在為您的應用程式之一建立安裝程式的過程中,您在透過PDO 測試資料庫設定時遇到了挑戰。透過提供的程式碼片段,您發現腳本嘗試無限期地連接到資料庫,儘管明顯的連接失敗。 要修正此問題並能夠區分有效和無效的資料庫連接,您需要設定錯誤建立 PDO 連接時的模式。具體方法如下:t...
    程式設計 發佈於2024-11-15
  • 使用委託在 Kotlin 中實現 Mixins(或 Traits)
    使用委託在 Kotlin 中實現 Mixins(或 Traits)
    (Read this article in french on my website) In object-oriented programming, a Mixin is a way to add one or more predefined and autonomous functionalit...
    程式設計 發佈於2024-11-15
  • C++ 中何時透過引用或指標傳遞:指導原則?
    C++ 中何時透過引用或指標傳遞:指導原則?
    C 中透過引用或指針傳遞:指導原則在C 中,了解何時採用引用傳遞以及何時使用指針至關重要。這種做法可以產生高效且無錯誤的程式碼。 一般情況將std::string 傳遞給函數:foo(std::string *) 或foo(std::string&)?將tr1::shared_ptr 傳遞給函數:f...
    程式設計 發佈於2024-11-15
  • 是否有跨瀏覽器的 JavaScript 取代 CSS 視窗單元(vh 和 vw)?
    是否有跨瀏覽器的 JavaScript 取代 CSS 視窗單元(vh 和 vw)?
    使用JavaScript 的CSS 視口單位CSS3 引入了視口百分比長度單位vh 和vw,這對於響應式佈局非常有價值。然而,問題是這些單元是否存在跨瀏覽器 JavaScript 替代方案。 JavaScript/jQuery 替代方案當然!可以利用 jQuery 為視口單元提供替代方案。這是一個基...
    程式設計 發佈於2024-11-15
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-15
  • 如何有效防範SQL注入與跨站腳本?
    如何有效防範SQL注入與跨站腳本?
    防範SQL 注入與跨站腳本攻擊:最佳方法防範SQL 注入與跨站腳本攻擊:最佳方法對抗SQL 注入與跨站腳本(XSS) 漏洞需要全面且細緻的戰略。除了隨意採用各種清理方法之外,了解這些攻擊的性質並實施適當的措施也至關重要。 SQL 注入預防禁用魔法引號: 避免使用魔術引號,因為它們會損壞資料並混淆清理...
    程式設計 發佈於2024-11-15
  • 如何在 Next.js 13 中有效地取得資料以避免未定義的資料?
    如何在 Next.js 13 中有效地取得資料以避免未定義的資料?
    Next.js 中的資料取得障礙:解決未定義的資料Next.js 提供了多種伺服器端資料取得的方法,包括getStaticProps 和getServerSideProps 。但是,這些方法主要適用於頁面資料夾中的頁面元件。在 Next.js 13 中,出現了一個稱為伺服器元件的新概念,允許直接在元...
    程式設計 發佈於2024-11-15
  • 無符號整數溢位真的會導致環繞嗎?
    無符號整數溢位真的會導致環繞嗎?
    C/C 中的無符號整數溢位 在電腦程式設計領域,理解整數溢位對於確保安全操作至關重要。一篇關於整數安全性的文章中的一個值得注意的引用指出,涉及無符號操作數的計算永遠不會溢出。但這到底意味著什麼? 理解行為無符號整數型別不代表負值。它們只能儲存不超過最大值的正整數。當涉及無符號整數的計算結果超過此最大...
    程式設計 發佈於2024-11-15
  • 條件處理應該在哪裡進行:資料映射器還是服務層?
    條件處理應該在哪裡進行:資料映射器還是服務層?
    資料映射器與服務層:處理複雜查詢中的條件在程式設計領域,誰應該處理條件的問題出現複雜的查詢。在考慮服務層的潛在限制時,評估資料映射器和服務層在此上下文中的作用非常重要。 資料映射器The資料映射器的主要任務是促進域物件與其持久機制之間的交互作用。它將網域物件轉換為適合儲存的格式,反之亦然。資料映射器...
    程式設計 發佈於2024-11-15
  • 如何在 C++ 中使用自訂比較器聲明優先權佇列?
    如何在 C++ 中使用自訂比較器聲明優先權佇列?
    在C 中聲明具有自訂比較器的優先權佇列在C 中,當嘗試聲明使用自訂比較器的優先權佇列時,正確定義比較器至關重要。當比較器未宣告為類別或獨立函數時,會出現錯誤「Compare」不是型別名稱。 要解決此問題,您可以為比較器定義一個類別並重載operator()它,如下例所示:class Compare ...
    程式設計 發佈於2024-11-15
  • 為什麼 C/C++ 中 `char*` 可以別名為 `struct*` 而反之則不行?
    為什麼 C/C++ 中 `char*` 可以別名為 `struct*` 而反之則不行?
    Char* 別名:指針的多功能性嚴格的別名規則控制著指針之間隱式別名的能力。它允許 char 指針指向任意類型的別名對象,同時限制相反的情況。這種不對稱性激發了人們的好奇心:char 如何為指向相同位置的 struct* 別名,而不是相反? 對於引用相同記憶體位址的 char 和 struct,兩者...
    程式設計 發佈於2024-11-15
  • CSS中「clear:both」如何控制元素的位置?
    CSS中「clear:both」如何控制元素的位置?
    理解「clear:both」在CSS 風格中的作用在進行網頁設計時,理解浮動的概念至關重要元素以及如何控制它們的位置。在這種情況下,「clear:both」樣式屬性成為一個有價值的工具。 「clear:both」的解釋「clear:both」屬性使一個元素,佔據其前面的任何浮動元素下方的空間。它強制...
    程式設計 發佈於2024-11-15

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3