摘要:我們?cè)谥胁僮髯址菍⑺D(zhuǎn)換為數(shù)組,再操作,如字符串的反轉(zhuǎn)字符串常用的一些方法判斷一個(gè)字符串是否以某個(gè)字符串開頭返回在字符串中首次出現(xiàn)的位置從位置開始查找,如果不存在,則返回。如果則查找整個(gè)字符串如同傳進(jìn)了。
我們?cè)趈s中操作字符串,往往是將它轉(zhuǎn)換為數(shù)組,再操作,如:
split("").reverse().join("")字符串的反轉(zhuǎn)
MDN
js字符串常用的一些方法 判斷一個(gè)字符串是否以某個(gè)字符串開頭str.indexOf(substr[, start]) => 返回 substr 在字符串 str 中首次出現(xiàn)的位置,從 start 位置開始查找,如果不存在,則返回 -1。
start可以是任意整數(shù),默認(rèn)值為 0。如果 start < 0 則查找整個(gè)字符串(如同傳進(jìn)了 0)。如果 start >= str.length,則該方法返回 -1,除非被查找的字符串是一個(gè)空字符串,此時(shí)返回 str.length
var str = "JavaScript"; str.indexOf("av"); // 1 str.indexOf("av",2); // -1 str.indexOf("",11); // 10 str.indexOf("",8); // 8
str.includes(substr[, start]) => ES6方法判斷 substr 是否被包含在 str 中,如果是返回true,否則返回false
var str = "To be, or not to be, that is the question.";
str.includes("To be"); // true str.includes("To be", 1); // false str.includes("TO BE"); // false
str.startsWith(substr[, start]) => ES6方法判斷 str 是否是以 substr “開頭”的,如果是返回true,否則返回false
var str = "To be, or not to be, that is the question."; str.startsWith("To be"); // true str.startsWith("not to be"); // false str.startsWith("not to be", 10); // truetoSting 和 valueOf
所有對(duì)象繼承了這兩個(gè)轉(zhuǎn)換方法
toString: 返回一個(gè)反映這個(gè)對(duì)象的字符串
valueOf: 返回它相應(yīng)的原始值
toString
var arr = [1,2,3] var obj = { a: 1, b: 2 } console.log(arr.toString()) // => 1,2,3 console.log(obj.toString()) // => [object Object] // 那我們修改一下它原型上的 toString 方法呢 Array.prototype.toString = function(){ return 123 } Object.prototype.toString = function(){ return 456 } console.log(arr.toString()) // => 123 console.log(obj.toString()) // => 456 // 我們看下其余類型轉(zhuǎn)換出來(lái)的結(jié)果, 基本都是轉(zhuǎn)換成了字符串 console.log((new Date).toString()) // => Mon Feb 05 2018 17:45:47 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) console.log(/d+/g.toString()) // => "/d+/g" console.log((new RegExp("asdad", "ig")).toString()) // => "/asdad/gi" console.log(true.toString()) // => "true" console.log(false.toString()) // => "false" console.log(function(){console.log(1)}.toString()) // => "function (){console.log(1)}" console.log(Math.random().toString()) // => "0.2609205380591437"
valueOf
var arr = [1,2,3] var obj = { a: 1, b: 2 } console.log(arr.valueOf()) // => [1, 2, 3] console.log(obj.valueOf()) // => {a: 1, b: 2} // 證明valueOf返回的是自身的原始值 // 同樣我們修改下 valueOf 方法 Array.prototype.valueOf = function(){ return 123 } Object.prototype.valueOf = function(){ return 456 } console.log(arr.valueOf()) // => 123 console.log(obj.valueOf()) // => 456 // valueOf轉(zhuǎn)化出來(lái)的基本都是原始值,復(fù)雜數(shù)據(jù)類型Object返回都是本身,除了Date 返回的是時(shí)間戳 console.log((new Date).valueOf()) // => 1517824550394 //返回的并不是字符串的世界時(shí)間了,而是時(shí)間戳 console.log(/d+/g.valueOf()) // => 456 當(dāng)我們不設(shè)置時(shí)valueOf時(shí),正常返回的正則表式本身:/d+/g,只是我們?cè)O(shè)置了 Object.prototype.valueOf 所以返回的時(shí):456 console.log(Math.valueOf()) // => 456 同上 console.log(function(){console.log(1)}.valueOf()) // => 456 同上toString 和 valueOf 實(shí)例
1.
var a = { toString: function() { console.log("你調(diào)用了a的toString函數(shù)") return 8 } } console.log( ++a) // 你調(diào)用了a的toString函數(shù) // 9 // 當(dāng)你設(shè)置了 toString 方法, 沒有設(shè)置 valueOf 方法時(shí),會(huì)調(diào)用toString方法,無(wú)視valueOf方法
2.
var a = { num: 10, toString: function() { console.log("你調(diào)用了a的toString函數(shù)") return 8 }, valueOf: function() { console.log("你調(diào)用了a的valueOf函數(shù)") return this.num } } console.log( ++a) // 你調(diào)用了a的valueOf函數(shù) // 11 // 而當(dāng)你兩者都設(shè)置了的時(shí)候,會(huì)優(yōu)先取valueOf方法, 不會(huì)執(zhí)行toString方法字符串模板 es5中
引入lodash庫(kù)的_.template()
// Use the "interpolate" delimiter to create a compiled template. var compiled = _.template("hello <%= user %>!"); compiled({ "user": "fred" }); // => "hello fred!"es6 駝峰化一個(gè)連字符連接的字符串
/** * Camelize a hyphen-delimited string.//駝峰化一個(gè)連字符連接的字符串 */ var camelizeRE = /-(w)/g; var camelize = cached(function (str) { return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ‘‘; }) }); /** * Capitalize a string.//對(duì)一個(gè)字符串首字母大寫 */ var capitalize = cached(function (str) { return str.charAt(0).toUpperCase() + str.slice(1)//把第一個(gè)字符串的首個(gè)字符大寫,把除第一個(gè)字符的字符串返回與大寫的首字符拼接 }); /** * Hyphenate a camelCase string.用字符號(hào)連接一個(gè)駝峰的字符串 */ var hyphenateRE = /([^-])([A-Z])/g; var hyphenate = cached(function (str) { return str .replace(hyphenateRE, ‘$1-$2‘)//$1為正則表達(dá)式匹配的第一個(gè)元素$2為第二個(gè)元素 .replace(hyphenateRE, ‘$1-$2‘) .toLowerCase()//使之最小化 });
/** * Check if a string starts with $ or _ */ function isReserved (str) { var c = (str + "").charCodeAt(0) return c === 0x24 || c === 0x5f }string to array repeat 判斷字符串是否以 $ 或 _ 開頭 參考
《JavaScript經(jīng)典實(shí)例》
js 基礎(chǔ)總結(jié)(常用的反轉(zhuǎn))
vue源碼解析
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/83194.html
摘要:學(xué)習(xí)筆記二個(gè)人學(xué)習(xí)筆記參考阮一峰的教學(xué)學(xué)習(xí)筆記二是對(duì)學(xué)習(xí)筆記一的補(bǔ)充歷史是標(biāo)準(zhǔn)新增特性匯總方應(yīng)航知乎專欄個(gè)小變化新增特性匯總方應(yīng)航知乎專欄以后一年一次只增加了兩個(gè)特性只增加了個(gè)特性功能最多數(shù)據(jù)類型補(bǔ)充字符串多行字符串新特性多行字符串 JavaScript學(xué)習(xí)筆記二 個(gè)人學(xué)習(xí)筆記 參考阮一峰的JavaScript教學(xué) 學(xué)習(xí)筆記二是對(duì)學(xué)習(xí)筆記一的補(bǔ)充 JavaScript歷史 sho...
摘要:取正值時(shí),陰影擴(kuò)大取負(fù)值時(shí),陰影收縮。默認(rèn)為,此時(shí)陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過(guò)目前取透明。 純JS實(shí)現(xiàn)KeyboardNav(學(xué)習(xí)筆記)一 這篇博客只是自己的學(xué)習(xí)筆記,供日后復(fù)習(xí)所用,沒有經(jīng)過(guò)精心排版,也沒有按邏輯編寫 GitHub項(xiàng)目源碼 預(yù)覽地址 最終效果 showImg(https://sfault-image.b0.upaiyun.com/...
摘要:取正值時(shí),陰影擴(kuò)大取負(fù)值時(shí),陰影收縮。默認(rèn)為,此時(shí)陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過(guò)目前取透明。 純JS實(shí)現(xiàn)KeyboardNav(學(xué)習(xí)筆記)一 這篇博客只是自己的學(xué)習(xí)筆記,供日后復(fù)習(xí)所用,沒有經(jīng)過(guò)精心排版,也沒有按邏輯編寫 GitHub項(xiàng)目源碼 預(yù)覽地址 最終效果 showImg(https://sfault-image.b0.upaiyun.com/...
摘要:最近一段時(shí)間在學(xué)習(xí),由于覺得直接使用它需要加載很多的文件,因此想使用來(lái)實(shí)現(xiàn)異步加載,并動(dòng)態(tài)注入控制器。手動(dòng)啟動(dòng),特別說(shuō)明此處的不是那個(gè)框架,而是的一個(gè)手動(dòng)啟動(dòng)框架的函數(shù)中完成了各模塊的初始化,并且引入了。 最近一段時(shí)間在學(xué)習(xí)angularjs,由于覺得直接使用它需要加載很多的js文件,因此想使用requirejs來(lái)實(shí)現(xiàn)異步加載,并動(dòng)態(tài)注入控制器。簡(jiǎn)單搜索了下發(fā)現(xiàn)好多教程寫的都很復(fù)雜,所...
摘要:第二階段該部分內(nèi)容是學(xué)習(xí)正則的第二篇內(nèi)容,點(diǎn)擊第一部分查看第一部分的內(nèi)容。 第二階段 該部分內(nèi)容是學(xué)習(xí)正則的第二篇內(nèi)容,點(diǎn)擊第一部分查看第一部分的內(nèi)容。 這部分學(xué)習(xí)的內(nèi)容包括: 分組 斷言 匹配模式(貪婪和懶惰) 分組 我們可以通過(guò)量詞匹配一個(gè)字符多次,但是如果我們想要匹配多個(gè)字符多次,就需要用到分組,比如下面一個(gè)例子 // 匹配字母和數(shù)字連續(xù)出現(xiàn)三次的字符 let str = a...
閱讀 1487·2021-11-24 11:16
閱讀 2690·2021-07-28 12:32
閱讀 2302·2019-08-30 11:22
閱讀 1440·2019-08-30 11:01
閱讀 595·2019-08-29 16:24
閱讀 3547·2019-08-29 12:52
閱讀 1625·2019-08-29 12:15
閱讀 1332·2019-08-29 11:18