|
|
|
|
|
在JavaScript編程中輸出emoji表情符號,這是一個很有趣的事情。如果你對此還不了解,那么有興趣可以看看,其實(shí)也不是很高深的東西,代碼寫起來也挺簡單的,都是平時自己熟悉的語法。本文將通過實(shí)例演示如何在JavaScript編程中輸出emoji表情符號。
表情符號的一個有趣之處在于,你可以將一些單個emoji表情符號組合成一個整體。同樣地,你也可以將復(fù)雜的emoji表情符號拆分為簡單的emoji表情符號。而這些,都可以用JavaScript輕松實(shí)現(xiàn)。
表情符號也是一個字符串。它不是一種新的數(shù)據(jù)類型,它們只是一個字符串。
而且,我們知道在計算機(jī)科學(xué)中,每個字符都對應(yīng)一個 Unicode 代碼。這是一個例子:
我們可以從他們的官方網(wǎng)站獲取完整的 Unicode 列表。
https://home.unicode.org/
同時,我們也知道 Unicode 碼位是有限的,我們不可能為所有的 emoji 分配一個獨(dú)立的 Unicode 編碼。所以一些表情符號是由基本的表情符號加上表情符號修飾符組成的,例如:
即使使用表情符號修飾符,也不夠。例如,如果我們想用表情符號表達(dá)一對情侶,我們應(yīng)該怎么做?
一種解決方案是直接在 Unicode 中添加一個表示一對的符號,但是這種解決方案占用了太多的 Unicode 資源。為了方便,人們發(fā)明了 Emoji ZWJ(ZERO WIDTH JOINER) 序列,它允許我們將不同的 emoji 組合在一起。
比如男人加電腦就是男程序員,女人加電腦就是女程序員。
在拼接emoji的時候,我們需要用到一個特殊的連接器,即 U+200D ZERO WIDTH JOINER(ZWJ)。
所以我們可以知道一件事:很多 emoji 不是一個單一的字符,而是由其他 emoji 和連接器拼接在一起的。
好吧,現(xiàn)在讓我們討論標(biāo)題中的問題。
????????也是一個表情符號序列,由女人??、男人??、愛?和嘴巴??組成。
其組成結(jié)構(gòu)如下:
這時候,當(dāng)我們在這個 emoji 上使用擴(kuò)展運(yùn)算符時,這個 emoji 會被分解成 8 個獨(dú)立的 Unicode 字符,其中 4 個也是 emoji,最后看起來就像我們的標(biāo)題所代表的那樣。
????????
不同于普通的字母和數(shù)字,鍵盤上沒有對應(yīng)表情符號的按鍵。所以你不能直接通過鍵盤輸入表情符號。如果現(xiàn)在你想現(xiàn)在輸入這四個表情符號,你要怎么做呢?
在 JavaScript 中,我們可以將 Unicode 轉(zhuǎn)換為字符String.fromCodePoint()
。靜態(tài)String.fromCodePoint()
方法返回使用指定的代碼點(diǎn)序列創(chuàng)建的字符串。
它們在控制臺中打印后,我們就可以將它們復(fù)制并粘貼到其他地方。
需要注意兩emoji表情符號合并的寫法。
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js-emoji</title>
</head>
<body>
<script type="text/javascript">
document.write(String.fromCodePoint("0x1F469")); //表情1
document.write(String.fromCodePoint("0x1F4BB")); //表情2
document.write(String.fromCodePoint('0x1F469', '0x200D', '0x1F4BB')); //表情1+表情2
</script>
</body>
</html>
但你也應(yīng)該注意到一件事:相同的表情符號在不同的操作系統(tǒng)/應(yīng)用程序中可能有不同的表示。
本文介紹了如何在JavaScript編程中輸出emoji表情符號的方法,其實(shí)就是使用了表情符號的 Unicode 編碼,然后通過轉(zhuǎn)換函數(shù)把它轉(zhuǎn)換成表情符號圖標(biāo)輸出,我們要做的,就是首先去獲得這個表情符號的 Unicode 編碼,而這個編碼是可以在本文中提供的 Unicode 官網(wǎng)里找到的。