ecmascript 變數可能包含兩種不同資料型別的值:
基本型別值和引用型別值
基本型別值指的是儲存在棧記憶體的簡單的資料段,即這種值完全儲存在記憶體中的乙個位置。而引用型別值則是指那些儲存在堆記憶體中的物件,意思是變數中儲存的實際上只是乙個指標,這個指標指向記憶體中的另乙個位置,該位置儲存物件。
基本型別是按值訪問的。
引用型別的值,由於這種值的大小不固定,因此不能把它們儲存到棧記憶體中。(大小固定)但記憶體位址的大小事固定的,因此可以將記憶體位址儲存在棧記憶體中。當查詢引用型別的變數時,先從棧中讀取記憶體位址,然後再通過位址找到堆中的值。對於這種,我們把它叫做按引用訪問。
動態屬性
定義基本型別值和引用型別值得方式是相似的;建立乙個變數並為該變數賦值。但是,當這個值儲存到變數中以後,對不同型別值可以執行的操作則大相徑庭。
var box=new object(); //建立引用型別
box.name='lee';//新增乙個屬性
alert(box.name);//"lee"
如果是基本型別的值新增屬性
var box="lee";
box.age=27;
alert(box.age);//undefined
這說明:只能給引用型別值動態地新增屬性
複製變數值
基本型別值:會在變數物件上建立乙個新值,然後把該值複製到為新變數分配的位置上。(複製的是值本身)
var num1=5;
var num2=num1;
var obj1=new object();
var obj2=obj1;
obj1.name="lee";
alert(obj2.name);//'lee'
傳遞引數(按值傳遞)
function setname(obj)
var person =new object();
setname(person);
alert(person.name);//"lee"
如果person 是按引用傳遞的,那麼person就會自動被修改為指向其name屬性值為「greg」的新物件。但是沒有,這說明即使在函式內部修改了引數的
值,但原始的飲用仍然保持未變。
檢測型別
typeof 檢測基本型別
instanceof()檢測引用型別
1 C 知識點 值型別和引用型別
一.什麼是值型別?什麼引用型別?1.值型別的值是儲存在棧上的。引用型別是存在堆上的。2.值型別變數宣告之後,不管是否已經分配記憶體,編譯器在堆上為其分配記憶體。3.引用型別宣告的時候,這時候只在棧中分配一小片記憶體用於容納乙個位址,此時候並沒有為其分配堆上的記憶體位址,當new乙個例項的時候,真正建...
php 引用變數知識點
一 什麼是引用變數?在php中,用什麼符號定義引用變數?引用變數 用不同的名字訪問同乙個變數內容 定義方式 使用 符號 二 引用變數衍生知識點 1 寫時複製 copy on write 演示寫時複製 copy on write var dump memory get usage 357896 定義乙...
void 型別知識點
1 void 型別的指標可以指向任意型別的物件。2 對於乙個void 的變數p void p 它給我們的資訊僅僅是p是乙個指標變數,並不會給我們說明p指向的物件的型別,當然我們也不能使用p進行任何操作,比如 原因很簡單,因為我們就只知道他是乙個指標,並不知道該指標指向的物件的型別是什麼,因此該指標上...