js引用型別

2022-08-29 22:24:26 字數 648 閱讀 9399

function

person(){};

person.prototype=,

sayname:

function

()};

var person1=new

person();

var person2=new

person();

person1.friends.push("van");

alert(person1.friends);

//"sun,li,van"

alert(person2.friends);//

"sun,li,van"

1.person作為乙個類,會有自己的私有屬性和共有屬性,可以把prototype理解為共有屬性。既然共有,那麼就是別人也能使用改變的。

2.friends是陣列,也就是引用型別的物件,push是這個陣列具有的乙個方法,所以呼叫push的時候不會改變這個物件的記憶體位址。但如果是直接賦值,

person1.friends="van";

改變了記憶體空間,實際上就是定義了私有屬性,原有的共有屬性不會改變!

3.屬性的查詢是基於原型鏈的,先找私有屬性,再找共有屬性,如果沒有共有屬性,就繼續網上找(object建構函式),直到頂端。

JS引用型別

重新總結一遍,最近推薦vue給後端的小夥伴使用,涉及到引用物件的值一變全變的問題,比如說乙個列表繫結的data陣列,編輯某一條的表單資料的時候,直接取列表物件的話,在表單中值改變的同時,列表中的資料也跟著變了,這顯然不是我們想要的。這個問題的原因就在於js中的引用型別物件,於是有以下 親測結果 基本...

js 引用型別

建立object 例項的方法有兩種 1 使用new 操作符 varperson newobject person.name ema person.age 27 2 使用物件字面量表示法 varperson 1.1.2.1 建立日期物件 varsomedate newdate 日期字串 date.ut...

JS 引用型別

1 值型別 基本型別 數值 number 布林值 boolean null undefined string 在賦值傳遞中會以引用型別的方式來處理 2 引用型別 物件 陣列 函式。1.直接將引用型別賦值獲取到的是原變數的引用 let test1 let test2 let test3 test1 t...