JavaScript 包装对象

万物皆对象

在JavaScript里,万物皆对象。但是某些对象有别于其它对象,我们可以用 typeof 来获取一个对象的类型,它总是返回一个字符串。

typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {}; // 'object'

可见,number、string、boolean、undefined 和 function 有别于其它对象。此外我们还要注意,null 和 Array 的类型也为 object,因此使用 typeof 无法区分它们。

 

包装对象

 通过包装对象我们可以把 number、boolean 和 string都包装为 object。包装对象使用 new 来创建:

var str = new String('123');
var num = new Number(123);
var bool = new Boolean(1);
console.log(typeof str);    //object
console.log(typeof num);    //object
console.log(typeof bool);    //object
console.log(str)    //[String: '123']

注意一般不要去使用包装对象。

如果在使用String、Boolean和Number时没有加new,它们就会被当作强制类型转换函数,转换成对应的类型,注意不是包装类型。

var str = String(123);
console.log(typeof str);    //string
console.log(str);    //123

总结

  • 不要使用new Number()new Boolean()new String()创建包装对象;

  • parseInt()parseFloat()来转换任意类型到number

  • String()来转换任意类型到string,或者直接调用某个对象的toString()方法;

  • 通常不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...}

  • typeof操作符可以判断出numberbooleanstringfunctionundefined

  • 判断Array要使用Array.isArray(arr)

  • 判断null请使用myVar === null

  • 判断某个全局变量是否存在用typeof window.myVar === 'undefined'

  • 函数内部判断某个变量是否存在用typeof myVar === 'undefined'

  • 任何对象都有toString()方法,nullundefined除外。
  • number对象调用toString()要使用 () 括起来。
123.toString();    //SyntaxError
(123).toString();    //123

参考:廖雪峰 标准对象

猜你喜欢

转载自www.cnblogs.com/huwt/p/10738748.html
今日推荐