当前位置: 首页 > wzjs >正文

北京哪里做网站好民治制作网站

北京哪里做网站好,民治制作网站,北京网络法庭,l流行wordpress普通字符类型和new String有什么区别:普通字符类型是string类型存在栈内存,new string是object存在堆内存中,普通字符类型是按值比较,new string是按引用比较,普通字符类型占用的内存较少,new string占用的…

普通字符类型和new String有什么区别:普通字符类型是string类型存在栈内存,new string是object存在堆内存中,普通字符类型是按值比较,new string是按引用比较,普通字符类型占用的内存较少,new string占用的内存比较多,普通字符类型之所有能使用对象才有的方法(如 slice()、substring()、toUpperCase() 等)。这是因为 JavaScript 引擎在背后自动执行了"原始值包装类型"的转换过程。

核心机制:自动装箱(Auto-Boxing)

当对原始值字符串调用方法时,JavaScript 引擎会执行以下步骤:

  1. 临时创建包装对象:自动创建一个对应的 String 对象

    javascript

    const temp = new String(原始字符串);
  2. 调用方法:在这个临时对象上调用方法

    javascript

    const result = temp.方法名();
  3. 销毁临时对象:使用完毕后立即丢弃这个临时对象

  4. 返回结果:将方法调用的结果返回

实际示例

javascript

const str = "hello world";// 当调用方法时,实际上发生了:
const temp = new String(str);  // 1. 创建临时String对象
const result = temp.slice(0, 5);  // 2. 调用方法
temp = null;  // 3. 销毁临时对象
return result;  // 4. 返回"hello"

为什么这样设计?

  1. 保持原始类型的高效性

    • 原始类型存储在栈内存,访问速度快

    • 只在需要方法时临时创建对象

  2. 提供对象式的便利性

    • 让原始类型也能使用丰富的方法

    • 保持语言使用的便利性和一致性

  3. 隐藏实现细节

    • 开发者无需关心底层转换

    • 语法更加简洁直观

证明自动装箱的存在

可以通过以下方式观察到这一机制:

javascript

const str = "test";
str.customProp = "value";  // 尝试添加属性console.log(str.customProp);  // undefined
// 因为临时对象已被销毁,属性添加无效

与显式 String 对象的区别

特性原始字符串new String() 创建的字符串
自动装箱临时创建,用完即毁持久对象
添加属性无法保留可以保留
内存使用更高效占用更多内存
类型比较typeof === "string"typeof === "object"

哪些方法可以这样使用?

所有 String.prototype 上的方法都可以这样调用,包括:

  • 提取方法:slice()substring()substr()

  • 搜索方法:indexOf()includes()startsWith()endsWith()

  • 大小写转换:toUpperCase()toLowerCase()

  • 修剪方法:trim()trimStart()trimEnd()

  • 分割方法:split()

  • 替换方法:replace()replaceAll()

  • 其他方法:charAt()charCodeAt()codePointAt() 等

性能考虑

虽然自动装箱很方便,但在极端性能敏感的场景(如循环中大量调用字符串方法),可以考虑:

  1. 缓存方法引用

    javascript

    const slice = String.prototype.slice;
    slice.call(str, 0, 5);
  2. 避免不必要的调用

    javascript

    // 不好的做法
    for (let i = 0; i < str.length; i++) {str.charAt(i);  // 每次循环都会创建临时对象
    }// 更好的做法
    for (const char of str) {// 直接访问字符
    }

总结

JavaScript 的原始字符串能够使用方法是因为:

  1. 引擎自动执行"装箱"操作,临时转换为 String 对象

  2. 调用方法后立即销毁临时对象

  3. 这种设计既保持了原始类型的高效性,又提供了对象式的便利方法

  4. 开发者无需显式创建 String 对象即可使用所有字符串方法

这种机制体现了 JavaScript 作为动态语言的灵活性和便利性,使得对原始值的操作更加直观和方便。


文章转载自:

http://P4zT7LwN.rxfjg.cn
http://QhNjUw8M.rxfjg.cn
http://v5jhazRb.rxfjg.cn
http://xc5YpEAc.rxfjg.cn
http://XA5bGq8b.rxfjg.cn
http://AV0q2Jmq.rxfjg.cn
http://z7e8udpG.rxfjg.cn
http://ZKBsSYhO.rxfjg.cn
http://X9kamPeg.rxfjg.cn
http://CvXPOp4a.rxfjg.cn
http://cIg29nNJ.rxfjg.cn
http://YL6Uywvs.rxfjg.cn
http://s452L7WZ.rxfjg.cn
http://C4Gvtrdq.rxfjg.cn
http://5CzRNVeb.rxfjg.cn
http://6sUv1xQB.rxfjg.cn
http://t2ylg6Eq.rxfjg.cn
http://tE24fsyI.rxfjg.cn
http://uE1TNcM9.rxfjg.cn
http://vKoFp2LB.rxfjg.cn
http://Xnc1BKHQ.rxfjg.cn
http://rRNpbLm1.rxfjg.cn
http://xCzNkPhk.rxfjg.cn
http://ZGAz2L1L.rxfjg.cn
http://9qEUwCIc.rxfjg.cn
http://LyHgdDqm.rxfjg.cn
http://uzx7PUpW.rxfjg.cn
http://Xa9FcH56.rxfjg.cn
http://5LTHCQS1.rxfjg.cn
http://ZBkzXl8m.rxfjg.cn
http://www.dtcms.com/wzjs/699745.html

相关文章:

  • 企业网站代码模板广告设计图片用什么软件
  • 务川自治县建设局网站阿里邮箱企业版app下载
  • 旅游网站首页制作网络推广的方式和途径有哪些
  • 徐州网站网站建设百家号网站开发属于什么领域
  • 如何推广网站网站推广常用方法企业网站新闻如何建设
  • 以营销型网站为主要营销方式的案例新公司网站设计注意事项
  • 公司网站突然打不开了微信企业公众号开发平台
  • 网站有些什么内容app开发流程详细
  • 网站开发信息建站宝盒做的网站
  • 建筑网站设置工资单人换了怎么换怎么做好网站运营
  • 网站开发需要花费秦皇岛和平大街网站建设
  • 东莞手机微信网站百度一下百度首页登录
  • wap 网站 手机网站功能及报价
  • 中石油技术开发公司网站电商网站开发案例
  • 建网站要注意的细节常州做网站企业
  • 山东高端网站建设服务商售后管理系统软件
  • 百度关键词网站怎么做dw制作一个环保网站模板下载
  • 长沙建设品牌网站app开发公司哪家好 上海
  • 网站团队组成wordpress 镜像域名
  • 汝州市城乡建设局网站郑州网站建设讯息
  • 做视频广告在哪个网站能够赚钱界面设计ui
  • 网站建设的流程推广方案为网站做推广
  • 网站制作的流程包括哪些飞沐视觉北京网站建设公司
  • 哪种网站开发简单广州品牌策划公司排行
  • 郑州二七区做网站公司网站开发有哪些
  • 制作网页的网站费用属于资本性支出吗个人做网站备案多少钱
  • 网站上线前要做哪些准备wordpress 文章列表插件
  • 如何做网站seo韩小培网站开发形式
  • 权威网站设计宣传信息网网站规划书
  • 中小企业网站开发韵茵福建百益建设集团有限公司网站