修改原型鏈之後,舊物件仍舊指向原先的原型鏈

2022-10-09 05:51:09 字數 456 閱讀 5810

function obj() 

const my = new obj();

console.log(my);

obj.prototype = array.prototype;

array.prototype.coco = 1;

console.log(my.coco); // undefined

const my2 = new obj();

console.log(my2.coco); // 1

console.log(my instanceof obj) // false

在修改建構函式的prototype後,修改前建立的物件仍舊指向原先的prototype

剛開始遇到的時候仍舊覺得有些奇怪,後面想了想,建立物件時,物件中的__proto__屬性也只是原先prototype引用的淺拷貝,這是在建立物件時就確定的了。

js原型物件和原型鏈的理解

原型的存在主要是為了解決在例項化時,節省記憶體,可以減少例項化是物件內部的屬性或者方法過多,可以將這些屬性或者方法放在原型上,例項物件在需要這些屬性或者方法時,可以直接呼叫,js會根據原型鏈進行查詢。function protof name,age protof.prototype.showtest...

建構函式 原型物件 原型鏈之間的關係

一 三者的概念 在js中萬物都是物件,每個資料中都有一條屬性叫 proto 這個屬性叫隱式原型,乙個物件中的隱式原型指向構造該物件的建構函式的原型物件prototype。prototype 是原型物件,專屬於函式,作用 為將來創造例項做父級使用,減少記憶體。constructor 指向了當前所在的p...

對js原型物件的拓展和原型物件的重指向的區別的研究

我寫了如下兩段 function person var p1 new person person.prototype p1.sayname 這一段的執行結果是 uncaught typeerror undefined is not a function 然後我又把它改寫為下面的 function p...