functionperson(){};
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...