zoukankan      html  css  js  c++  java
  • call , apply的this指向实现原理并自己实现封装

    实现this指向原理
    var value = 'value' var obj = { value: 'obj' } function func() { console.log(this.value) } func() // obj func.call(obj) // obj obj.func = func // 相当于obj变成了 obj = { value: 'obj', func: function func() {console.log(this.value)}} --创建后记得删除 obj.func() // obj 相当于调用obj内的func函数

    实现this指向并传参原理

    // 将newCall赋到Function的父对象上
         Function.prototype.newCall = function () {
              var ctx = arguments[0] || window // 判断是否传了一个对象进来,如果有将this指向这个对象
              ctx.fn = this
              var args = []
              for(var i = 1; i<arguments.length; i++) {
                args.push('arguments[' + i + ']')
              }
              // args = ['arguments[i]','arguments[2]'].join(',')
              // eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。缺点是会改变作用域
              var result = eval('ctx.fn(' + args.join(',') + ')') 
              delete ctx.fn // 删除在ctx对象内创建的fn函数
              return result
            }
  • 相关阅读:
    WEB上传大文件
    Java+超大文件上传
    php+文件夹上传
    php上传视频大文件
    每一个程序猿需掌握的20个代码命名小贴士
    Mysql整数运算NULL值处理注意点
    拓展欧几里得模板
    bzoj 1088 简单dfs
    决策树
    进程-IPC 管道 (一)
  • 原文地址:https://www.cnblogs.com/PasserByOne/p/11957093.html
Copyright © 2011-2022 走看看