js包装类
JS的数据类型:
基本类型:Undefined, Null, Boolean, Number, String
引用类型:Object, Array, Date, RegExp (其实就是对象)
JS中只有对象才有属性和方法,原始值没有属性和方法
那么我们平常求字符串的长度 用length属性不是没有问题吗?
var str="hello world"; var long=str.length; console.log(long); //得出结果为11
这是因为js中提供了三种特殊的引用类型(String Number Boolean)每当我们给原始值赋属性值时 后台都会给我们偷偷转换 调用包装类
怎么进行“包装”的?
举个例子 用事实说话吧:(注释的部分就是后台为我们偷偷干的事)
var str="hello word"; //var str = new String("hello world"); // 1.创建出一个和基本类型值相同的对象 //var long = str.length; // 2.这个对象就可以调用包装对象下的方法,并且返回结给long变量 //str = null; // 3.之后这个临时创建的对象就被销毁了 var long=str.length; //因为str没有length属性 所以执行这步之前后台会自动执行以上三步操作 console.log(long); // (结果为:10) //var str = new String("hello word"); // 1.因为下面有输出创建出str.length 而str不应该具有length这个属性 所以再次开辟空间创建出一个和基本类型值相同的对象 //str.length=nudefined; // 2.因为包装对象下面没有length这个属性没有值,所以值是未定 //str = null; // 3.这个对象又被销毁了 console.log(str.length) // (结果为:undefined)
给基本类型添加属性和方法:
可是我们如果想给基本类型添加属性和方法,又该怎么办呢?
可以在基本包装类的原型上实现:
当然 如果要计算字符串的长度这是完全没有必要的,你使用length属性就可以了 这里只是展示了一种 给基本类型添加属性的方法
//给字符串添加方法 要写到对应的包装对象的原型下才行 var str= "hello world"; //若我们想在原型上设置一个属性long 保存字符串的长度 //var str = new String("hello world");// 1.找到基本包装对象,创建一个和字符串值相同的对象, //String.prototype.long=str.length; // 2.通过这个对象找到了包装对象下的方法并调用 //str=null; // 3.这个刚创建的对象被销毁 String.prototype.long=str.length;// 执行到这一句,同样因为没有length属性 后台会偷偷的执行上述三步操作 console.log(str.long); //结果为:11
注意:这样因为你是给基本类型string的原型上添加的属性,所以任意一个字符串都可以访问到这个属性及此值。(所以不提倡这种做法)
var str= "hello world"; var str2="哈哈 我的长度也为11吗?"; String.prototype.long=str.length; console.log(str2.long); //结果为:11
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南