proto 與constructor.prototype 之間的差異
使用JavaScript 物件時,了解proto 和constructor.prototype 至關重要。 proto 指向物件的直接原型,而 constructor.prototype 指的是建立該物件的函數所建立的物件。這種差異在遍歷原型鏈時會導致不同的結果。
原型鏈遍歷
如提供的程式碼所示,可以使用 proto遍歷物件的原型鏈。範例中使用proto來遍歷Gadget函數實例newtoy的原型鏈。每個後續的 proto 呼叫都會在鏈中上升一級,最終返回 null,因為除了 Object.prototype 之外沒有原型。
但是,如果 constructor.prototype.constructor.prototype.constructor.prototype使用時,它也會提升原型鏈,但最終返回初始 Gadget 函數,因為它引用創建 Gadget 構造函數的原型。
Internet Explorer 中的Null 檢查
在Internet Explorer 中,proto 屬性不可用,可以使用Function 物件上的原型getter 來遍歷原型鏈。下面的程式碼示範如何檢查 null:
function checkNull(obj) { while (obj = obj.prototype) { // Check if the prototype is null } }
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3