本文實例講述了JavaScript引用類型之基本包裝類型。分享給大家供大家參考,具體如下:
為了操作基本類型值,ECDMAScript提供了3個特殊的引用類型——基本包裝類型Boolean、Number和String。每當讀取一個基本類型值時,后臺會創建一個對應的基本包裝類型的對象。
var str = "Hello world";var substr = str.substring();
等價于
var str = new String("Hello world");//創建String類型的實例var substr = str.substring();//在實例上調用substring()方法str = null;//銷毀實例基本包裝類型是特殊的引用類型,引用類型與基本包裝類型的區別如下:
(1)對象的生存期
使用new操作符創建的引用類型的實例,在執行流離開當前作用域之前一直存在于內存中,而自動創建的基本包裝類型的對象,只存在于代碼執行瞬間,然后立即被銷毀,也就是說,不能在運行時為基本包裝類型添加屬性和方法。
var str1 = "Hello world";var str2 = new String("Hello World");str1.life = 20;str2.life = 20;alert(str1.life);//undefinedalert(str2.life);//20(2)instanceof操作符測試結果
使用instanceof操作符測試基本包裝類型實例會返回true,測試基本類型值會返回false。
var str1 = "Hello World";var str2 = new String("Hello world");alert(str1 instanceof String);//falsealert(str2 instanceof String);//true可以顯式地調用Boolean、Number、String來創建基本包裝類型的對象,但盡可能不要這樣做,因為這樣不易區分是在處理基本類型還是引用類型。
Object構造函數會根據傳入值的類型返回相應基本包裝類型的實例。
var str = new String("Hello world");alert(str instanceof String);//truevar num = new Number(16);alert(num instanceof Number);//truevar bool = new Boolean(true);alert(bool instanceof Boolean);//true對基本包裝類型的實例調用typeOf()方法會返回"Object",實例變量中保存的是基本類型值。
var str = new String("Hello world");alert(typeof str);//objectvar num = new Number(16);alert(typeof num);//objectvar boolean = new Boolean(true);alert(typeof boolean);//object使用new操作符調用基本包裝類型的構造函數,與直接調用同名的轉型函數是不同的,變量中保存的是基本包裝類型的實例。
var str = String("Hello world");alert(typeof str);//stringvar num = Number(16);alert(typeof num);//numbervar bool = Boolean(true);alert(typeof bool);//boolean所有基本包裝類型的對象在轉換為布爾類型時值都是true。
var boolean1 = new Boolean(false);alert(boolean1);//falsealert(boolean1 && true);//truevar boolean2 = new Boolean(0);alert(boolean2);//falsealert(boolean2 && true);//truevar boolean3 = new Boolean("");alert(boolean3);//falsealert(boolean3 && true);//true
新聞熱點
疑難解答
圖片精選