美文网首页
封装函数 f,使 f 的 this 指向指定的对象

封装函数 f,使 f 的 this 指向指定的对象

作者: 泪滴在琴上 | 来源:发表于2024-01-25 16:19 被阅读0次

第一种:

function bindThis(f, oTarget) {
return function(){
return f.call(oTarget,...arguments)
}
} //使用call方法 注意arguments对象的参数形式

第二种:

return function(){
return f.apply(oTarget,arguments)
}
} //使用apply方法

第三种:

function bindThis(f, oTarget) {
return f.bind(oTarget)
}// bind方法 直接绑定this指向

考察点:call,apply和bind的作用和区别?
相同点:1:都能改变this指向
2:都能传递参数
3:都能通过方法"."方法名调用
不同点:1:函数名不同
参数传递方式不同:call是一个一个的传递;apply是作为数组或者数组对象传递;bind是预先指定部分参数并返回一个新函数;
改变this指向的时机不同:call和apply都是立即调用,并且用于动态指定函数的上下文和参数;bind则是创建一个新的函数,并将指定的对象作为函数上下文,可以预先指定部分参数。(bind在复制时改变,其他两个在调用时改变)
参数传递时机不同(注意看第三个)

call的详细介绍:

call 方法是 JavaScript 中函数对象的一个方法,它允许您在调用函数时动态地指定函数的上下文(即 this 值)以及函数的参数。与 apply 方法不同的是,call 方法的参数是一个一个地传递的,而不是作为数组传递。

以下是一个简单的示例,演示了如何使用 call 方法:

var person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

var sayHello = function(greeting) {
  console.log(greeting + ", " + this.fullName());
};

sayHello.call(person, "Hello"); // 输出 "Hello, John Doe"

在上面的示例中,我们定义了一个 person 对象和一个 sayHello 函数。然后,我们使用 call 方法调用了 sayHello 函数,并将 person 对象作为其上下文,同时传递了一个参数 "Hello"。当我们调用 call 方法时,sayHello 函数会以 person 对象作为上下文,并输出 "Hello, John Doe"。

bind的详细介绍:

JavaScript 中的 bind 方法用于创建一个新的函数,该函数在调用时会将指定的对象作为其上下文(即 this 值),并且可以预先指定一些参数。这在需要在事件处理程序、回调函数等场景中非常有用。

以下是一个简单的示例,演示了如何使用 bind 方法:

var person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

var logName = function(greeting) {
  console.log(greeting + ", " + this.fullName());
};

var logPersonName = logName.bind(person, "Hello");
logPersonName(); // 输出 "Hello, John Doe"

在上面的示例中,我们定义了一个 person 对象和一个 logName 函数。然后,我们使用 bind 方法创建了一个新的函数 logPersonName,并将 person 对象绑定为其上下文。同时,我们也预先指定了一个参数 "Hello"。当我们调用 logPersonName 函数时,它会以 person 对象作为上下文,并输出 "Hello, John Doe"。

apply的详细介绍:

apply 方法是 JavaScript 中函数对象的一个方法,它允许您在调用函数时动态地指定函数的上下文(即 this 值)以及函数的参数。apply 方法接收两个参数:第一个参数是要绑定为函数上下文的对象,第二个参数是一个数组或类数组对象,其中包含了作为函数参数传递的值。

以下是一个简单的示例,演示了如何使用 apply 方法:

var person = {
  firstName: "John",
  lastName: "Doe",
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

var sayHello = function(greeting) {
  console.log(greeting + ", " + this.fullName());
};

sayHello.apply(person, ["Hello"]); // 输出 "Hello, John Doe"

在上面的示例中,我们定义了一个 person 对象和一个 sayHello 函数。然后,我们使用 apply 方法调用了 sayHello 函数,并将 person 对象作为其上下文,同时传递了一个数组 ["Hello"] 作为函数的参数。当我们调用 apply 方法时,sayHello 函数会以 person 对象作为上下文,并输出 "Hello, John Doe"。

相关文章

  • 修改this 指向

    题目描述: 封装函数 f,使 f 的 this 指向指定的对象

  • js日常方法总结

    封装函数 f,使 f 的 this 指向指定的对象 获取 url 中的参数 指定参数名称,返回该参数的值 或者 空...

  • Days25 笔试-JS

    1.封装函数 f,使 f 的 this 指向指定的对象 2.获取url参数 (2)获取url中指定参数 使用正则表...

  • javascript基础:修改this指针

    题目 封装函数 f,使 f 的 this 指向指定的对象 。 输入例子 输出例子 分析 题目拆解 该题目的要求是:...

  • JavaScript编程题记录

    封装函数 f ,使 f 的 this 指向指定的对象 tips:bind返回值是一个函数,而apply是立即执行函...

  • 15. 高阶函数Higher-order function

    变量可以指向函数 函数本身也可以赋值给变量,即:变量可以指向函数 >>> f = abs>>> f(-10)10 ...

  • 高阶函数

    高阶函数: 变量可以指向函数 abs(-10):这是函数调用 abs这是函数本身,也是对象 >>>abs f这是变...

  • 函数式编程

    高阶函数 变量可以指向函数 变量f指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。 函数名也...

  • 对象里的函数简写方式和箭头函数及this指向

    对象里的函数简写和正常写法 下面是三者的this指向问题 讲解 fun () {}这是对象里面函数的简写跟,跟 f...

  • python进阶

    教程地址:python进阶 - 慕课网 python函数式编程 变量可以指向函数: f = absprint(f)...

网友评论

      本文标题:封装函数 f,使 f 的 this 指向指定的对象

      本文链接:https://www.haomeiwen.com/subject/jftmodtx.html