所謂“包裝對象”,就是分別與數(shù)值、字符串、布爾值相對應(yīng)的Number、String、Boolean三個原生對象。這三個原生對象可以把原始類型的值變成(包裝成)對象。
包裝對象實例可以使用Object對象提供的原生方法,主要是 valueOf 方法和 toString 方法。
1、valueOf( ) 返回包裝對象實例對應(yīng)的原始類型的值
new Number( 123 ).valueOf( ) //"123"
new String( "abc" ).valueOf( ) //"abc"
new Boolean( "true" ).toString( ) //"true"
2、toString( ) 返回該實例對應(yīng)的原始類型只得字符串形式(同上)
原始類型可以自動調(diào)用定義在包裝對象上的方法和屬性。比如length屬性,返回字符串的長度。
Boolean對象除了可以作為構(gòu)造函數(shù),還可以作為工具方法單獨使用:
Boolean( undefined ) // false
Boolean( null ) // false
Boolean( 0 ) // false
Boolean( ' ' ) // false
Boolean( NaN ) // false
Boolean( 1 ) // true
Boolean( 'false' ) // true
Boolean( [ ] ) // true
Boolean( { } ) // true
Boolean ( function( ) { } ) // true
Boolean( /foo/ ) // true
使用not運算符(!)也可以達(dá)到同樣效果。
!!( function( ) { } ) // true
!!( /foo/ ) // true
對于一些特殊值,Boolean對象前面加不加new,會得到完全相反的結(jié)果,必須小心。
if( Boolean( false ) )
console.log( 'true' ); // 無輸出
if( new Boolean( false ) )
console.log( 'true' ); // true
if( Boolean( null ) )
console.log('true'); // 無輸出
if ( new Boolean( null ) )
console.log('true'); // true