zoukankan      html  css  js  c++  java
  • Array.prototype.slice.call()

    1.今天看到Zepto.js的插件   $.extend通过源对象扩展目标对象的属性

    $.extend = function (target) {
    var deep, args = slice.call(arguments, 1)
    if (typeof target == 'boolean') {
    deep = target
    target = args.shift()
    }
    args.forEach(function (arg) {
    extend(target, arg, deep)
    })
    return target
    }

    看到 slice.call(arguments, 1)一下子蒙了,是怎么样的一个执行顺序,带我好好缕缕

    1.call(content,val1,val2),第一个参数是改变this的指向,之后的都是传进去的相应的参数
    slice.call(arguments, 1) ===>  arguments.slice(1);

    slice.call(arguments, 1)可以理解成是让arguments转换成一个数组对象,让arguments具有slice()方法。要是直接写arguments.slice(1)会报错。
    因为arguments不是一个数组就没有slice属性

    typeof arguments==="Object" //而不是 "Array"


  • 相关阅读:
    APP Https双向认证抓包
    剖析XSS
    php连接mysql
    linux去掉某一字符开头的行
    memcached+php客户端
    memcached-repcached
    memcached+memadmin
    Linux GPT分区
    Linux查看文件夹大小
    linux挂载windwos共享文件
  • 原文地址:https://www.cnblogs.com/sunnie-cc/p/6797786.html
Copyright © 2011-2022 走看看