JavaScript之基本類型和引用類型

基本類型和引用類型的值

  • 基本類型值指的是簡單的數據段。
  • 引用類型值指那些由多個值構成的對象。

在將一個值賦給變量時,解析器必須確定這個值是基本數據類型還是引用數據類型值。

  • 5種基本數據類型:Undefined、Null、Boolean、Number和String。這五種數據類型是按值訪問的,因為可以操作保存在變量中的實際的值。
  • 引用類型的值是保存在內存中的對象。Javascript不允許訪問內存中年的位置,也就是說不能直接操作對象的內存空間。在操作對象時實際上是在操作對象的引用而不是實際的對象,為此,引用類型的值是按引用訪問的。

引用類型動態的屬性

定義基本類型值和引用類型值的方式是類似的:創建一個變量并為該變量賦值。引用類型的值,我們可以為其添加屬性和方法,也可以改變和刪除其屬性和方法。例如:

var  student = new Object();
student.name = "tom";
alert("student.name");        //"tom"

但是,我們不能給基本類型的值添加屬性,盡管這樣做不會導致任何錯誤。比如:

var student = "tom";
student.age = 27;
alert(student.age)           //undefined

上面的例子說明只能給引用值動態地提添加屬性,以便將來使用。

復制變量值

從一個變量向另一個變量復制類型值和引用值時,存在不同。如果從一個變量向另一個變量復制基本類型的值,會在變量對象上創建一個新值,然后把該值復制到為新變量分配的位置上。例如:

var num1 = 4;
var num2 = num1;

num1 中的4和num2 中的4是完全獨立的,給值只是num1 中4的一個副本。此后,這兩個變量可以參與任何操作而不會互相影響。

當從一個變量向另一個變量復制引用類型的值時,同樣也會將儲存在變量對象中的值復制一份放到為新變量分配的空間中。不同的是,這個值的副本實際上是一個指針,而這個指針指向存儲在堆中的一個對象。復制操作結束后,兩個變量實際上將引用同一個對象。因此,改變其中一個變量,就會影響另一個變量。例如:

var  obj1 = new Object();
var  obj2 = obj1;
obj1.name = "tom";
alert("obj2.name")
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容