首先看下面例子,str是string类型,但是为什么会有自己的方法呢?这就关系到包装类型
var str = 'hello';
alert( typeof str );//string
str.charAt(0);
str.indexOf('e');
上面是什么原因呢?
,当出现str.charAt(0),即str后面跟方法时。基本类型会找到对应的包装对象类型,然后包装对象把所有的属性和方法给了基本类型,然后包装对象消失
除过null,undefined,基本类型都有自己对应的包装对象:String Number Boolean ,再看下面例子
var str = new String('hello');
alert( typeof str );//object
当我们给基本类型添加方法时,可以把方法添加到基本类型对应的包装对象上,如下所示
var str = 'hello';
String.prototype.lastValue = function(){
return this.charAt(this.length-1);
};
alert( str.lastValue() ); //o
思考一道面试题
var str = 'hello';
str.number = 10;
alert( str.number ); //?答案是undefined
因为每出现str.number,就相当于重新创建了一个包装对象。原因在于上面提到的包装对象把所有的属性和方法给了基本类型,然后包装对象消失