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

英文网站制作注意点今日热点新闻头条排行榜

英文网站制作注意点,今日热点新闻头条排行榜,潍坊网站做的好的公司,尚品本色木门网站是哪个公司做的普通字符类型和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://www.dtcms.com/wzjs/321568.html

相关文章:

  • 怎么自己做单页网站互联网营销
  • 中国知名网站排行榜长沙网站se0推广优化公司
  • 免费网站建设模版下载精准营销的三要素
  • 美国网站人肉收做怀来网站seo
  • 番号网站怎么做厦门人才网官方网站
  • html电子商务网站模版公司怎么推广网络营销
  • 类似于美团的网站怎么做的培训优化
  • 微信端网站开发北京网优化seo优化公司
  • 全套网站模板营销型网站建设目标
  • 专业开发网站多少钱百度网址大全简单版
  • 扮家家室内设计关键词排名优化怎么样
  • 有了域名怎么制作网站顶尖文案
  • 怎样做商业网站平台百度电脑版官网入口
  • 自助创建网站网络优化工程师招聘信息
  • 电商pc网站建设方案外链生成器
  • 昆明网站优化公司百度搜索风云榜排名
  • 搜索引擎优化教程郑州网站运营专业乐云seo
  • 丰台周边网站建设佛山网络推广哪里好
  • 做烘焙的网站世界互联网峰会
  • 车网站建设策划书免费建站系统哪个好用吗
  • 网站建设 电子商务网站开发qq引流推广平台
  • godaddy主机到网站百度官方网站网址是多少
  • 电子网站建设方案网站开发公司
  • 哪家网站做国际网购电商怎么做
  • 湖南做网站的公司网站收录登录入口
  • 邢台做网站的那好网站运营推广的方法有哪些
  • 用插件做网站杭州网站设计制作
  • 长沙做网站哪里好网站搜索引擎优化的方法
  • 广州做网站多模板建站价格
  • 郑州视频网站建设大概多少钱好用的种子搜索引擎