Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
符串的創(chuàng)建方式:
var a1='abc'; // 字面量
var a2=new String('abc'); // 構(gòu)造函數(shù)
typeof a1; // "string"
typeof a2; // "object"
// 上面代碼中,變量s1是字符串,s2是對(duì)象。所以,String對(duì)象也叫包裝對(duì)象。
除了用作構(gòu)造函數(shù),String對(duì)象還可以當(dāng)作工具方法使用;
將任意類型的值轉(zhuǎn)為字符串。
String(true); // "true"
String(5); // "5"
// 上面代碼將布爾值ture和數(shù)值5,分別轉(zhuǎn)換為字符串
①.length屬性:
字符串實(shí)例的length屬性返回字符串的長度。
例:
'abcdefg'.length // 7
字符串對(duì)象是一個(gè)類似數(shù)組的對(duì)象(很像數(shù)組,但不是數(shù)組)。
new String('cba');
// String {0: "c", 1: "b", 2: "a", length: 3}
(new String('cba'))[1] // "b"
// 上面代碼中,字符串cba對(duì)應(yīng)的字符串對(duì)象,有數(shù)值鍵(0、1、2)和length屬性,
// 所以可以像數(shù)組那樣取值。
②charAt()方法:
charAt方法返回指定位置的字符,參數(shù)是從0開始編號(hào)的位置。
var a=new String("abc");
a.charAt(1); // "b"
a.charAt(a.length - 1); // "c"
// 這個(gè)方法完全可以用數(shù)組下標(biāo)來替代。
'abc'.charAt(1); // "b"
'abc'[1]; // "b"
③slice()方法:
slice方法是用于從原來的字符串中取出子字符串并返回,且不改變?cè)址K牡谝粋€(gè)參數(shù)是子字符串的開始位置,第二個(gè)參數(shù)是子字符串的結(jié)束位置(注意:不包含該位置)。
'abcdefghij'.slice(0, 4); // "abcd"
// 如果省略第二個(gè)參數(shù),則表示子字符串一直到原字符串結(jié)束。
'abcdefghij'.slice(4); // "efghij"
// 如果參數(shù)是負(fù)值,表示從結(jié)尾開始倒數(shù)計(jì)算的位置,即該負(fù)值加上字符串長度。
'abcdefghij'.slice(-6); // "efghij"
'abcdefghij'.slice(0, -6); // "abcd"
'abcdefghij'.slice(-2, -1); // "i"
// 如果第一個(gè)參數(shù)大于第二個(gè)參數(shù),slice方法返回一個(gè)空字符串。
'abcdefghij'.slice(2, 1);
④substring()方法:
substring方法用于從原字符串取出子字符串并返回,不改變?cè)址鷖lice()方法很相像。它的第一個(gè)參數(shù)表示子字符串的開始位置,第二個(gè)位置表示結(jié)束位置(注意:返回結(jié)果不含該位置)。
'abcdefghij'.substring(0, 4); // "abcd"
// 如果省略第二個(gè)參數(shù),則表示子字符串一直到原字符串的結(jié)束。
'abcdefghij'.substring(4); // "efghij"
// 如果第二個(gè)參數(shù)大于第一個(gè)參數(shù),substring方法會(huì)自動(dòng)更換兩個(gè)參數(shù)的位置。
'abcdefghij'.substring(10, 4); // "efghij"
// 等同于
'abcdefghij'.substring(4, 10); // "efghij"
⑤substr()方法:
substr()方法用于從原字符串取出子字符串并返回,不改變?cè)址鷖lice()和substring()方法的作用相同。
substr()方法的第一個(gè)參數(shù)是子字符串的開始位置(從0開始計(jì)算),第二個(gè)參數(shù)是子字符串的長度。
'abcdefghij'.substr(4, 6); // "efghij"
// 如果省略第二個(gè)參數(shù),則表示子字符串一直到原字符串的結(jié)束。
'abcdefghij'.substr(4); // "efghij"
// 如果第一個(gè)參數(shù)是負(fù)數(shù),表示倒數(shù)計(jì)算的字符位置。如果第二個(gè)參數(shù)是負(fù)數(shù),將被自動(dòng)轉(zhuǎn)為0,
// 因此會(huì)返回空字符串。
'abcdefghij'.substr(-6); // "efghij"
'abcdefghij'.substr(4, -1); // ""
// 上面代碼中,第二個(gè)例子的參數(shù)-1自動(dòng)轉(zhuǎn)為0,表示子字符串長度為0,所以返回空字符串
⑥trim()方法:
trim()方法用于去除字符串兩端的空格,返回一個(gè)新字符串,且不改變?cè)址?/p>
" hello world ".trim();
// "hello world"
// 該方法去除的不僅是空格,還包括制表符(\t、\v)、換行符(\n)和回車符(\r)。
'\r\naaa \t'.trim(); // 'aaa'
⑦toLowerCase()、toUpperCase()方法:
toLowerCase()方法用于將一個(gè)字符串全部轉(zhuǎn)為小寫,toUpperCase()則是用于將一個(gè)字符串全部轉(zhuǎn)為大寫。
它們都返回一個(gè)新字符串,且不改變?cè)址?/p>
'ABC'.toLowerCase();
// "abc"
'abc'.toUpperCase();
// "ABC"
⑧replace()方法:
replace()方法用于替換匹配的子字符串,一般情況下只替換第一個(gè)匹配(帶有g(shù)修飾符的正則表達(dá)式除外)。
'aaa'.replace('a', 'b') // "baa"
'aaa'.replace(/a/g, 'b') // "bbb"
⑨split()方法:
split()方法按照給定規(guī)則分割字符串,返回一個(gè)由分割出來的子字符串組成的數(shù)組。
者 | Jonathan Saring
編輯 | 無明
JavaScript 仍然是 2018 年最受歡迎和使用最為廣泛的編程語言,因此 JavaScript 生態(tài)系統(tǒng)也會(huì)繼續(xù)發(fā)展壯大。
然而,JavaScript 的標(biāo)準(zhǔn)庫仍然繼續(xù)保持“短小精悍”的身材。為了填補(bǔ)標(biāo)準(zhǔn)庫功能方面的空白,在過去幾年中,GitHub 上出現(xiàn)了很多流行的 JavaScript 庫。以下列出了 11 個(gè)有用的庫,這些庫的維護(hù)狀態(tài)均很活躍。
1.Underscore 和 Lodash(dah)
可能大多數(shù)人都知道這兩個(gè)庫。Underscore 的目的是為 JavaScript 中的常見任務(wù)提供實(shí)用的函數(shù)。Lodash 是下載量最大和被依賴最多的庫之一,旨在為數(shù)組、字符串、object 和 argument 對(duì)象提供更一致的跨環(huán)境迭代支持,并已成為 Underscore 的超集。這兩個(gè)庫由相同的核心貢獻(xiàn)者維護(hù),在技術(shù)選型時(shí)完全可以考慮使用它們。
Lodash - https://github.com/lodash/lodash
Underscore - https://github.com/jashkenas/underscore
2. Ramda
在 GitHub 上的 Star 已經(jīng)超過 12,000,這個(gè)庫專為函數(shù)式編程而設(shè)計(jì),可以輕松創(chuàng)建不改變用戶數(shù)據(jù)狀態(tài)的函數(shù)式管道。Ramda 的核心設(shè)計(jì)理念是創(chuàng)建具有不變性和無副作用的函數(shù)。所有的函數(shù)會(huì)被自動(dòng)柯里化,并根據(jù)易用性安排參數(shù)的順序。
Ramda - https://github.com/ramda/ramda
3. MathJS
在 GitHub 上的 Star 已經(jīng)超過 6000,這個(gè)庫是 JavaScript 和 Node.js 的數(shù)學(xué)擴(kuò)展庫,與 JavaScript 內(nèi)置的 Math 庫兼容。該庫包含一個(gè)靈活的表達(dá)式解析器,能夠運(yùn)行符號(hào)計(jì)算,并提供了一系列內(nèi)置函數(shù)和常量。用戶還可以對(duì)其進(jìn)行擴(kuò)展。
MathJS - https://github.com/josdejong/mathjs
4. Moment
在 GitHub 上的 Star 已經(jīng)超過 37,000,是一個(gè) JavaScript 日期和時(shí)間操作庫,用于解析、驗(yàn)證、操作和格式化日期。Moment 可以在瀏覽器和 Node.js 中運(yùn)行。從 2.10.0 版本開始遷移到 ECMAScript 6。
Moment - https://github.com/moment/moment
另外兩個(gè)同類的庫:
Date-fns(10,000 個(gè) Star)- https://github.com/date-fns/date-fns
DateJS - https://github.com/datejs/Datejs
5. Sugar
在 GitHub 上的 Star 已經(jīng)超過 3500,主要用于處理本地對(duì)象。這個(gè)庫支持自定義構(gòu)建,還提供了模塊化的 npm 包,因此可以只使用其中必要的部分模塊(也可以與 Bit 結(jié)合使用),用戶還可以通過自定義方法或使用插件來應(yīng)對(duì)特定的使用場(chǎng)景。
Sugar - https://github.com/andrewplummer/Sugar
6. Lazy
在 GitHub 上的 Star 將近 5000,是一個(gè)功能強(qiáng)大的 JavaScript 庫,它的 lazy 引擎“盡可能地少做一些工作”,同時(shí)保持足夠的靈活性。
Lazy - https://github.com/dtao/lazy.js
7. CollectJS
在 GitHub 上的 Star 超過 3200,主要用于處理 JavaScript 中的數(shù)組和對(duì)象,無需其他依賴,提供了幾十個(gè)有用的功能和 API,這些 API 幾乎與 Laravel Collections 5.5 相同。該庫的維護(hù)狀態(tài)很活躍,值得關(guān)注。
CollectJS - https://github.com/ecrmnn/collect.js
8. ChanceJS
Chance 在 GitHub 上的 Star 超過 3200,一個(gè)簡(jiǎn)單的隨機(jī)對(duì)象生成器,用于生成隨機(jī)的字符串、數(shù)字等。在編寫自動(dòng)化測(cè)試代碼或任何需要隨機(jī)對(duì)象的地方,可以用它來減少單調(diào)的工作。
ChanceJS - https://github.com/chancejs/chancejs
9. ChartJS
在 GitHub 上的 Star 將近 40,000 個(gè),提供了 8 種不同類型的數(shù)據(jù)可視化,每種類型都支持動(dòng)畫和定制。借助 Chart.js,我們可以使用<canvas>標(biāo)簽創(chuàng)建簡(jiǎn)單的HTML5圖表,而且在所有現(xiàn)代瀏覽器中都具有出色的渲染性能。
ChartJS - https://github.com/chartjs/Chart.js
10. Polished
在 GitHub 上的 Star 超過 3500 個(gè),由 styled-components 團(tuán)隊(duì)開發(fā),是一個(gè)非常優(yōu)秀的輕量級(jí)工具集,支持使用 JavaScript 編寫具有 SASS 風(fēng)格輔助函數(shù)和 mixin 的樣式。該庫與 styled-components、Aphrodite、Radium 或簡(jiǎn)單的內(nèi)聯(lián)樣式兼容。這個(gè)庫可以在 GitHub 上找到,Bit 社區(qū)(非官方)也單獨(dú)提供所有的功能,因此可以單獨(dú)安裝、導(dǎo)入和使用。
Polished - https://github.com/styled-components/polished
Bit 社區(qū)提供的單獨(dú)安裝版 - https://bitsrc.io/ranm8/polished
11. Mout
Mout.js 是一組模塊化的 JavaScript 庫,可以在瀏覽器或 node.js 中運(yùn)行,提供類似于其他語言標(biāo)準(zhǔn)庫(Python、Ruby、PHP 等)中的輔助方法。mout.js 允許僅加載必需的模塊或函數(shù),并提供了一致的 API,規(guī)范了跨瀏覽器行為。
Mout - https://github.com/mout/mout
特別推薦
Bit utils
一個(gè)模塊化和高性能的庫,已經(jīng)被用在 Bit 的 web hub 中。這些函數(shù)可使用 NPM/Yarn 進(jìn)行單獨(dú)安裝,用戶也可以創(chuàng)建自己的集合,并從不同的庫和項(xiàng)目中收集有用的功能。
Bit utils - https://bitsrc.io/bit/utils
Voca
一個(gè)用于操作字符串的 JavaScript 庫。它提供的功能包括大小寫轉(zhuǎn)換、trim、pad、slugify、latinise、sprintf、truncate、escape 等。用戶可以加載單個(gè)函數(shù),以便最小化應(yīng)用程序的構(gòu)建。該庫具有很高的測(cè)試覆蓋率,并且不依賴其他庫。
Voca - https://github.com/panzerdp/voca
Licia
只有 400 個(gè) Star,這個(gè)有趣的項(xiàng)目基本上是一個(gè)簡(jiǎn)單但有用的 JavaScript 片段集合,具有很高的測(cè)試覆蓋率,文檔也很齊全。
Licia - https://github.com/liriliri/licia
下是JavaScript的一些內(nèi)置對(duì)象代碼示例:
1.Math對(duì)象:
// 返回隨機(jī)數(shù)
Math.random();
// 返回1和10之間的隨機(jī)整數(shù)
Math.floor(Math.random() * 10) + 1;
// 返回?cái)?shù)字的平方根
Math.sqrt(25);
2.Date對(duì)象:
// 創(chuàng)建一個(gè)表示當(dāng)前時(shí)間的Date對(duì)象
const today=new Date();
// 創(chuàng)建一個(gè)指定日期的Date對(duì)象
const christmas=new Date(2023, 11, 25);
// 返回當(dāng)前月份
today.getMonth();
// 返回當(dāng)前年份
today.getFullYear();
3.Array對(duì)象:
// 創(chuàng)建一個(gè)數(shù)組
const fruits=['apple', 'banana', 'orange'];
// 添加元素到數(shù)組末尾
fruits.push('grape');
// 刪除數(shù)組末尾的元素
fruits.pop();
// 獲取數(shù)組長度
fruits.length;
4.String對(duì)象:
// 創(chuàng)建一個(gè)字符串
const greeting='Hello, world!';
// 獲取字符串長度
greeting.length;
// 將字符串轉(zhuǎn)換為大寫
greeting.toUpperCase();
// 獲取子字符串
greeting.slice(0, 5); // 'Hello'
5.RegExp對(duì)象:
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。