一起来啃《JavaScript语言精粹》----方法(method)

一、Array

  • array.concat(item...)
    concat方法产生一个新数组,它包含一份array的浅拷贝,并把一个或多个参数item附加在其后。如果参数item是一个数组,那么它的每个元素会被分别添加。


    Paste_Image.png
  • array.join(separator)
    join方法把一个array构造成一个字符串。它先把array中的每个元素构造成一个字符串,接着用一个separator分隔符把它们连接在一起。默认的是逗号‘,’。要想做到无间隔的连接,我们可以使用空字符串作为separator。


    Paste_Image.png

    pop可以像这样实现:
    Array.method('pop', function() {
    return this.splice(this.length - 1, 1)[0];
    }

  • array.pop()
    pop和push方法使得数组array可以像堆栈一样工作。pop方法移除array中的最后一个元素并返回该元素。如果该array是空,它会返回undefined。


    Paste_Image.png
  • array.push(item...)
    push可以像这样实现:
    Array.method('push', function(){
    this.splice.apply(this, [this.length,0].concat(Array.prorotype.slice.apply(arguments));
    return this.length;
    }
    push方法把一个或多个参数item附加到一个数组的尾部。和concat方法不同的是,它会修改array,如果参数item是一个数组,它会把参数数组作为单个元素整个添加到数组中,并返回这个array的新长度值。


    Paste_Image.png
  • array.reverse()
    reverse方法反转array里的元素的顺序,并返回array本身


    Paste_Image.png
  • array.shift()
    shift方法移除数组array中的第1个元素并返回该元素。如果这个数组array是空的,它会返回undefined。shift通常比pop慢得多:


    Paste_Image.png

    shift可以这样实现:
    Array.method('shift', function(){
    return this.splice(0,1)[0];
    })

  • array.unshift(item...)
    unshift方法像push方法一样,用于把元素添加到数组中,但它是把item插入到array的开始部分而不是尾部。它返回数组的新的长度:


    Paste_Image.png
  • array.slice(start,end)
    slice方法对array中的一段做浅拷贝。首先拷贝array[start],一直拷贝到array[end]为止。end参数是可选的,默认值是该数组的长度。如果两个参数中的任何一个是负数,array.length会和它们相加,试图让它们成为非负数。如果start大于等于array.length,得到的结果将会是一个新的空数组。


    Paste_Image.png
  • array.splice(start,deleteCount,item...)
    splice方法从array中移除一个或多个元素,并用新的item替换它们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素个数。如果有额外的参数,那些item会插入到被移除元素的位置上。它返回一个包含被移除元素的数组。
    splice最主要的用处是从一个数组中删除元素。千万不要把splice和slice弄混了:


    Paste_Image.png
  • array.sort(comparefn)
    sort方法对array中的内容进行排序。它不能正确地给一组数字排序:


    Paste_Image.png

    JavaScript的默认比较函数把要被排序的元素都视为字符串。所以当它比较这些数字的时候,会把它们转化为字符串,于是得到一个错得离谱的结果。
    幸运的是,你可以使用自己的比较函数来替换默认的比较函数。你的比较函数接收连个参数,并且这两个参数相等则返回0,如果第1个参数应该排列在前面,则返回一个负数,如果第2个参数应该排列在前面,则返回一个正数。


    Paste_Image.png

    上面这个函数可以使数字正确排序,但它不能使字符串排序。如果我们想要给任何包含简单值的数组排序,必须要做更多的工作:
    Paste_Image.png

二、Number

  • number.toExponential(fractionDigits)
    toExponential方法把这个number转换成一个指数形式的字符串。可选参数fractionDigits控制其小数点的数字位数。它的值必须在0~20:


    Paste_Image.png
  • number.toFixed(fractionDigits)
    toFixed方法把这个number转换成为一个十进制数形式的字符串。可选参数fractionDigits控制其小数点后的数字位数。它的值必须在0~20,默认为0:


    Paste_Image.png
  • number.toPrecision(precision)
    toPrecision方法把这个number转换成为一个十进制数形式的字符串。可选参数precious控制数字的精度。它的值必须在0~21:


    Paste_Image.png
  • number.toString(radix)
    toString方法把这个number转换成一个字符串。可选参数radix控制基数。它的值必须在2~36。默认的radix是以10为基数。radix参数最常用的是整数,但是它可以用任意的数字。
    在最普通的情况下,number.toSting()可以更简单地写为String(number):


    Paste_Image.png
  • Object
    object.hasOwnProperty(name)
    如果这个object包含一个名为name的属性,那么hasOwnProperty方法返回true。原型链中的同名属性是不会被检查的。这个方法对name就是“hasOwnProperty”时不起作用,此时会返回false:


    Paste_Image.png

三、String

  • string.charAt(pos)
    charAt方法返回在string中pos位置处的字符,pos默认值是0。如果pos小于0或大于等于字符串长度,它会返回空字符串:


    Paste_Image.png

    charAt可以像这样实现:
    String.method('charAt', function(pos){
    return this.slice(pos, pos+1);
    })

  • string.charCodeAt(pos)
    charCodeAt方法同charAt一样,只不过它返回的不是一个字符串,而是以整数形式表示的在string中的pos位置处的字符的字符码位。如果pos小于0或大于等于字符串长度,它返回NaN:


    Paste_Image.png
  • String.fromCharCode(char...)
    String.fromCharCode函数根据一串数字编码返回一个字符串。


    Paste_Image.png
  • string.concat(string..)
    concat方法把其他的字符串连接在一起来构造一个新的字符串。它很少被使用,因为用+运算符更为方便:


    Paste_Image.png
  • string.indexOf(searchString,position)
    indexOf方法在string内查找另一个字符串。如果它被找到,返回第1个匹配字符的位置,否则返回-1.可选参数position可设置从string的某个指定的位置开始查找:


    Paste_Image.png
  • string.replace(searchValue,replaceValue)
    replace方法对string进行查找和替换操作,并返回一个新的字符串。参数searchValue可以是一个字符串或一个正则表达式对象。如果它是一个字符串,那么searchValue只会在第1次出现的地方被替换,所以下面的代码结果是“mother-in_law”:
    var result = "mother_in_law".replace('','-');//mother-in_law
    如果searchValue是一个正则表达式并且带有g标识,它会替换所以得匹配。如果没有带g标识,它会仅替换第1个匹配:
    "mother_in_law".replace(/
    /g,'-')//mother-in-law
    "mother_in_law".replace(/_/,'-')//mother-in_law
  • string.search(regexp)
    search方法和indexOf方法类似,只是它接受一个正则表达式对象作为参数而不是一个字符串。如果找到匹配,它返回第1个匹配的首字符位置,如果没有找到匹配,则返回-1.此方法会忽略g标识,且没有position参数:


    Paste_Image.png
  • string.slice(start,end)
    slice方法复制string的一部分来构造一个新的字符串。如果start参数是负数,它将与string.length相加。end参数是可选的,且默认值是string.length。如果end为负数,那么它将与string.length相加。end参数等于你要取得最后一个字符的位置加上1。要想得到从位置p开始的n个字符,就用string.slice(p, p+n)。


    Paste_Image.png
  • string.substring(start,end)
    substring方法和slice方法一样,只是它不能处理负数参数。没有任何理由去使用substring方法。请用slice替代它。
  • string.split(separator,limit)
    split 方法把这个string分割成片段来创建一个字符串数组。可选参数limit可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。
    如果separator是一个空字符,会返回一个单字符的数组:


    Paste_Image.png

    否则,此方法会在string中查找所有separator出现的地方。分隔符两边的每个单元格文本都会被复制到该数组中。此方法会忽略g标识:


    Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容