最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS原始類(lèi)型為什么能調(diào)用方法原理詳解

 更新時(shí)間:2023年06月11日 11:08:23   作者:BigDipper  
這篇文章主要為大家介紹了JS原始類(lèi)型為什么能調(diào)用方法原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

參考地址:原始類(lèi)型的方法

假如,有這樣一段代碼,將字符串轉(zhuǎn)換為大寫(xiě):

let str = 'abc';
str.toUpperCase(); // 'ABC'

存儲(chǔ)多個(gè)屬性

這是一段簡(jiǎn)單又普通的代碼,按說(shuō)str是字符串類(lèi)型,它存儲(chǔ)的是一個(gè)單值,并且是不可變的,它不能像對(duì)象那樣,可以存儲(chǔ)多個(gè)屬性,像這樣:

let user = {};
user.name = '張三';
user.say = function () {
  return '你好';
};
user.name; // 張三
user.say(); // 你好

不能給普通類(lèi)型添加屬性

通過(guò)代碼可以看到,不能給普通類(lèi)型添加屬性

let user = '';
user.name = '張三';
user.say = function () {
  return '你好';
};
user.age; // undefined
user.say(); //  user.say is not a function

那么,為什么原始類(lèi)型(比如字符串)能夠調(diào)用方法(比如toUpperCase())呢?

其原理是:為了使方法起作用,創(chuàng)建了提供額外功能的特殊“對(duì)象包裝器”,使用后即被銷(xiāo)毀。

“對(duì)象包裝器”對(duì)于每種原始類(lèi)型都是不同的,它們被稱為 String、NumberBoolean、Symbol 和 BigInt。因此,它們提供了不同的方法。

以之前的代碼為例:

let str = 'abc';
str.toUpperCase(); // 'ABC'

實(shí)際發(fā)生的情況:

  • 字符串 str 是一個(gè)原始值。因此,在訪問(wèn)其屬性時(shí),會(huì)創(chuàng)建一個(gè)包含字符串字面值的特殊對(duì)象,并且具有可用的方法,例如 toUpperCase()。
  • 該方法運(yùn)行并返回一個(gè)新的字符串。
  • 特殊對(duì)象被銷(xiāo)毀,只留下原始值 str。

所以原始類(lèi)型可以提供方法,但它們依然是輕量級(jí)的。

JavaScript 引擎高度優(yōu)化了這個(gè)過(guò)程。它甚至可能跳過(guò)創(chuàng)建額外的對(duì)象。但是它仍然必須遵守規(guī)范,并且表現(xiàn)得好像它創(chuàng)建了一樣。

以上就是JS原始類(lèi)型為什么能調(diào)用方法原理詳解的詳細(xì)內(nèi)容,更多關(guān)于JS原始類(lèi)型調(diào)用方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Flutter?WebView性能優(yōu)化使h5像原生頁(yè)面一樣優(yōu)秀

    Flutter?WebView性能優(yōu)化使h5像原生頁(yè)面一樣優(yōu)秀

    這篇文章主要為大家介紹了Flutter?WebView性能優(yōu)化使h5像原生頁(yè)面一樣優(yōu)秀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Javascript中彈窗confirm與prompt的區(qū)別

    Javascript中彈窗confirm與prompt的區(qū)別

    今天小編就為大家分享一篇關(guān)于Javascript中彈窗confirm與prompt的區(qū)別,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • 9個(gè)JavaScript日常開(kāi)發(fā)小技巧

    9個(gè)JavaScript日常開(kāi)發(fā)小技巧

    這篇文章主要介紹了9個(gè)JavaScript日常開(kāi)發(fā)小技巧,,需要的朋友可以參考下
    2020-10-10
  • 最新評(píng)論

    海兴县| 大田县| 灵丘县| 揭阳市| 四平市| 阿勒泰市| 彭泽县| 乡宁县| 花莲县| 紫阳县| 海南省| 昭平县| 抚顺市| 渑池县| 贡觉县| 杭锦旗| 舒兰市| 罗源县| 垦利县| 民勤县| 边坝县| 开原市| 杭州市| 禹城市| 元阳县| 大姚县| 临颍县| 林州市| 水富县| 玛纳斯县| 安仁县| 西青区| 大埔区| 曲水县| 梁山县| 肃南| 偃师市| 长岭县| 宁陕县| 阳曲县| 嘉鱼县|