成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

學習筆記: JS字符串

CastlePeaK / 3629人閱讀

摘要:我們在中操作字符串,往往是將它轉換為數(shù)組,再操作,如字符串的反轉字符串常用的一些方法判斷一個字符串是否以某個字符串開頭返回在字符串中首次出現(xiàn)的位置從位置開始查找,如果不存在,則返回。如果則查找整個字符串如同傳進了。

我們在js中操作字符串,往往是將它轉換為數(shù)組,再操作,如:

split("").reverse().join("")
字符串的反轉

MDN

js字符串常用的一些方法 判斷一個字符串是否以某個字符串開頭

str.indexOf(substr[, start]) => 返回 substr 在字符串 str 中首次出現(xiàn)的位置,從 start 位置開始查找,如果不存在,則返回 -1。

start可以是任意整數(shù),默認值為 0。如果 start < 0 則查找整個字符串(如同傳進了 0)。如果 start >= str.length,則該方法返回 -1,除非被查找的字符串是一個空字符串,此時返回 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

所有對象繼承了這兩個轉換方法
toString: 返回一個反映這個對象的字符串
valueOf: 返回它相應的原始值

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

// 我們看下其余類型轉換出來的結果, 基本都是轉換成了字符串
console.log((new Date).toString()) // => Mon Feb 05 2018 17:45:47 GMT+0800 (中國標準時間)
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轉化出來的基本都是原始值,復雜數(shù)據(jù)類型Object返回都是本身,除了Date 返回的是時間戳
console.log((new Date).valueOf()) // => 1517824550394  //返回的并不是字符串的世界時間了,而是時間戳
console.log(/d+/g.valueOf()) // => 456  當我們不設置時valueOf時,正常返回的正則表式本身:/d+/g,只是我們設置了 Object.prototype.valueOf 所以返回的時:456
console.log(Math.valueOf()) // => 456 同上
console.log(function(){console.log(1)}.valueOf()) // => 456 同上 
toString 和 valueOf 實例

1.

var a = {
    toString: function() {
        console.log("你調(diào)用了a的toString函數(shù)")
        return 8
    }
}
console.log( ++a) 
// 你調(diào)用了a的toString函數(shù) 
// 9  
// 當你設置了 toString 方法, 沒有設置 valueOf 方法時,會調(diào)用toString方法,無視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
// 而當你兩者都設置了的時候,會優(yōu)先取valueOf方法, 不會執(zhí)行toString方法
字符串模板 es5中

引入lodash庫的_.template()

// Use the "interpolate" delimiter to create a compiled template.
var compiled = _.template("hello <%= user %>!");
compiled({ "user": "fred" });
// => "hello fred!"
es6

駝峰化一個連字符連接的字符串
/**
 * Camelize a hyphen-delimited string.//駝峰化一個連字符連接的字符串
 */
var camelizeRE = /-(w)/g;
var camelize = cached(function (str) {
  return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ‘‘; })
});

/**
 * Capitalize a string.//對一個字符串首字母大寫
 */
var capitalize = cached(function (str) {
  return str.charAt(0).toUpperCase() + str.slice(1)//把第一個字符串的首個字符大寫,把除第一個字符的字符串返回與大寫的首字符拼接
});

/**
 * Hyphenate a camelCase string.用字符號連接一個駝峰的字符串
 */
var hyphenateRE = /([^-])([A-Z])/g;
var hyphenate = cached(function (str) {
  return str
    .replace(hyphenateRE, ‘$1-$2‘)//$1為正則表達式匹配的第一個元素$2為第二個元素
    .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)典實例》
js 基礎總結(常用的反轉)
vue源碼解析

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/83194.html

相關文章

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

    摘要:學習筆記二個人學習筆記參考阮一峰的教學學習筆記二是對學習筆記一的補充歷史是標準新增特性匯總方應航知乎專欄個小變化新增特性匯總方應航知乎專欄以后一年一次只增加了兩個特性只增加了個特性功能最多數(shù)據(jù)類型補充字符串多行字符串新特性多行字符串 JavaScript學習筆記二 個人學習筆記 參考阮一峰的JavaScript教學 學習筆記二是對學習筆記一的補充 JavaScript歷史 sho...

    mrcode 評論0 收藏0
  • JS實現(xiàn)KeyboardNav(學習筆記)一

    摘要:取正值時,陰影擴大取負值時,陰影收縮。默認為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。 純JS實現(xiàn)KeyboardNav(學習筆記)一 這篇博客只是自己的學習筆記,供日后復習所用,沒有經(jīng)過精心排版,也沒有按邏輯編寫 GitHub項目源碼 預覽地址 最終效果 showImg(https://sfault-image.b0.upaiyun.com/...

    source 評論0 收藏0
  • JS實現(xiàn)KeyboardNav(學習筆記)一

    摘要:取正值時,陰影擴大取負值時,陰影收縮。默認為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。 純JS實現(xiàn)KeyboardNav(學習筆記)一 這篇博客只是自己的學習筆記,供日后復習所用,沒有經(jīng)過精心排版,也沒有按邏輯編寫 GitHub項目源碼 預覽地址 最終效果 showImg(https://sfault-image.b0.upaiyun.com/...

    lscho 評論0 收藏0
  • angularjs學習筆記——使用requirejs動態(tài)注入控制器

    摘要:最近一段時間在學習,由于覺得直接使用它需要加載很多的文件,因此想使用來實現(xiàn)異步加載,并動態(tài)注入控制器。手動啟動,特別說明此處的不是那個框架,而是的一個手動啟動框架的函數(shù)中完成了各模塊的初始化,并且引入了。 最近一段時間在學習angularjs,由于覺得直接使用它需要加載很多的js文件,因此想使用requirejs來實現(xiàn)異步加載,并動態(tài)注入控制器。簡單搜索了下發(fā)現(xiàn)好多教程寫的都很復雜,所...

    王軍 評論0 收藏0
  • JS正則表達式學習筆記2

    摘要:第二階段該部分內(nèi)容是學習正則的第二篇內(nèi)容,點擊第一部分查看第一部分的內(nèi)容。 第二階段 該部分內(nèi)容是學習正則的第二篇內(nèi)容,點擊第一部分查看第一部分的內(nèi)容。 這部分學習的內(nèi)容包括: 分組 斷言 匹配模式(貪婪和懶惰) 分組 我們可以通過量詞匹配一個字符多次,但是如果我們想要匹配多個字符多次,就需要用到分組,比如下面一個例子 // 匹配字母和數(shù)字連續(xù)出現(xiàn)三次的字符 let str = a...

    Ajian 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<