js中包装对象的介绍

责编:menVScode 2017-06-20 10:36 阅读(795)

        在js中像下面这样声明的字符串不是对象,但既然这里的s不是对象,为什么会有charAt的方法呢?

var str = 'menvscode';
console.log(str.charAt(2)); //n
console.log(typeof str); //string

        js提供了11种引用类型:Object、Array、Date、Function、Error、RegExp、Math、Number、String、Boolean、Globle。其中包括了三种基本包装类型,也就是Number、String和Boolean,它们是特殊的引用类型,既与其他的引用类型相似,同时又具有与各自的原始类型相应的特殊行为。

        包装对象 : 基本类型都有自己对应的包装对象 : String  Number  Boolean (null,undefined没有包装对象)

        当执行 console.log(str.charAt(2)) 的时候,基本类型会找到对应的包装对象类型,然后包装对象把所有的属性和方法给了基本类型,然后包装对象消失,这个过程就叫包装对象。

        如何给基本类型添加方法或者属性呢

var str = 'menvscode';
String.prototype.lastValue = function(){
	return this.charAt(this.length-1);
}
console.log(str.lastValue())

        基本类型方法和属性的添加,是添加在包装对象的原型上面。


var str = 'MVC'
str.num = 67;
console.log(str.num);//undefined

        上面的代码输出的结果是undefined,原因也是跟包装对象有关。当代码执行到 str.num=67 的时候,str会去找对应的包装对象,给他添加num属性然后消失。再执行这句的时候 console.log(str.num) 又创建了一个对象,不是同一个,读取不到num的属性。

标签: js 包装对象
前端交流群: MVC前端网(menvscode.com)-qq交流群:551903636

邮箱快速注册

忘记密码