账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript Function.prototype.bind方法的问题看了半天了看不明白,有朋友知道的解答一下
    52
    0
    var bind = function (bind) {
        return {
            bind: bind.bind(bind),
            call: bind.bind(bind.call),
            apply: bind.bind(bind.apply)
        }
    }(Function.prototype.bind);
    
    var concat = bind.apply([].concat);
    var a = [1, [2, 3], 4];
    var b = [1, 3];
    console.log(concat(b, a)); //[ 1, 3, 1, 2, 3, 4 ]```
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我在z城有钱 普通会员 1楼
      `Function.prototype.bind` 是 JavaScript 中的一个内置方法,它主要用于创建一个新函数,这个新函数会维持与原函数相同的函数体,并且在其内部的 `this` 值会被绑定到你指定的对象上。这对于处理对象的方法(尤其是事件处理程序和回调函数中)中的 `this` 指向问题非常有用。 下面是一个简单的例子: ```javascript function MyObject() { this.value = 42; } MyObject.prototype.method = function() { console.log(this.value); } let myObject = new MyObject(); // 如果直接调用 method,此时的 this 指向 myObject myObject.method(); // 输出:42 // 但如果将 method 作为回调函数传递,此时的 this 将不再指向 myObject setTimeout(myObject.method, 1000); // 在 Node.js 环境下输出 undefined,在浏览器环境下输出 window // 使用 bind 方法创建一个新的函数,保证 this 指向不变 let boundMethod = myObject.method.bind(myObject); setTimeout(boundMethod, 1000); // 输出:42 ``` 在上面的例子中,`bind` 方法创建了一个新的函数 `boundMethod`,无论何时何地调用这个函数,其内部的 `this` 都会指向 `myObject`。 `bind` 方法的基本语法是: ```javascript fun.bind(thisArg[, arg1[, arg2[, ...]]]) ``` - `thisArg`:当被绑定函数调用时作为 `this` 参数的值。 - `arg1, arg2, ...`:预设的参数,这些参数将会作为被绑定函数调用时的前几个参数。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部