我们都知道在js中普通类型的变量是没有属性和方法的,然后有时却并不是这样。
var str = "努力,奋斗";
console.log(str.length); //
var num = 10;
console.log(typeof num.toString()); //string
为什么会这样?因为一旦我们在普通类型的变量中使用了属性或者方法,js就会自动new一个对应的对象。
var str = "努力,奋斗";
console.log(str = new String("努力,奋斗").length);
会将变量的内容添加到对象的第一个参数中,其实这个这个创建的过程就叫做包装对象,new String就是str的包装对象。但是值得注意的是这个包装对象一旦运行以后就会销毁。
var str = "努力,奋斗";
str.index = 10;
str.fn = function(){
console.log(str);
}
console.log(str.index); //undefined
str.fn(); //报错
可以更简单的理解,就是这些基本类型只能使用包装对象的提供的属性和方法,而不能自定义属性和方法。