国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

學(xué)習(xí)筆記: JS字符串

CastlePeaK / 3563人閱讀

摘要:我們?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); // true
toSting 和 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

相關(guān)文章

  • JS筆記二:JS歷史、數(shù)據(jù)類型、for in遍歷對(duì)象、typeof的BUG

    摘要:學(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...

    mrcode 評(píng)論0 收藏0
  • JS實(shí)現(xiàn)KeyboardNav(學(xué)習(xí)筆記)一

    摘要:取正值時(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/...

    source 評(píng)論0 收藏0
  • JS實(shí)現(xiàn)KeyboardNav(學(xué)習(xí)筆記)一

    摘要:取正值時(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/...

    lscho 評(píng)論0 收藏0
  • angularjs學(xué)習(xí)筆記——使用requirejs動(dòng)態(tài)注入控制器

    摘要:最近一段時(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ù)雜,所...

    王軍 評(píng)論0 收藏0
  • JS正則表達(dá)式學(xué)習(xí)筆記2

    摘要:第二階段該部分內(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...

    Ajian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<