JavaScript原型对象this指向问题如何复杂多变?

2026-04-05 17:341阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计822个文字,预计阅读时间需要4分钟。

JavaScript原型对象this指向问题如何复杂多变?

目录:

一、this 指向

二、修改 this 指向

1.call() 方法

2.apply() 方法

总结:

一、this 指向

JavaScript原型对象this指向问题如何复杂多变?

在 JavaScript 中,this 关键字用于指代当前执行上下文中的对象。在构造函数中,this 指向新创建的对象实例。

二、修改 this 指向

1.call() 方法

call() 方法允许你调用一个对象的一个方法,用另一个对象替换当前对象。语法如下:javascriptobject.call(thisValue, [arg1[, arg2[, …]]])

2. apply() 方法apply() 方法与 call() 类似,但接受一个数组作为参数。语法如下:javascriptobject.apply(thisValue, [anArray])

总结:

一、this 指向

在构造函数中,this 指向新创建的对象实例。

那么,原型对象 this 的指向是什么呢?javascriptfunction Student(age, name) { this.age=age;}在这个例子中,当创建 Student 实例时,this 指向该实例对象。

目录
  • 一、this指向
  • 二、修改this指向
    • 1、call()方法
    • 2、apply()方法
  • 总结

    一、this指向

    构造函数中的this 指向实例对象。那么原型对象this的指向呢?

    如下:

    function Student(age,name){ this.age = age; this.name = name; } var that; Student.prototype.score = function(){ console.log('孩子们成绩都很好!'); that = this; } var xl = new Student(18,'小熊'); xl.score(); console.log(that === xl);

    定义一个全局变量that,在score函数里面给它赋值,让其指向函数里面的this,调用实例对象的score方法,判断that和实例对象是否一致,如果一致,则说明原型对象this的指向是该实例。

    打印结果为:


    即原型对象里面放的是方法, 这个方法里面的this 指向的是 这个方法的调用者, 也就是这个实例对象。

    二、修改this指向

    1、call()方法

    写一个简单的两数相加的函数。

    function fn(a,b){ console.log(a+b); console.log(this); } fn(1,2)

    在函数内部打印this,调用函数,看其this的指向。


    可知this指向window对象,如果我们想让this指向我们新创建的一个对象,怎么操作呢?

    先定义一个对象,

    o = {};

    然后通过call()修改this指向,让其指向新创建的对象o

    o = { name: 'xl' }; fn.call(o,1,2);

    打印结果为:


    现在this指向新创建的对象o,即修改成功。

    2、apply()方法

    apply()和call()方法基本相同,这里就不赘述,直接上代码:

    function fn(a,b){ console.log(a+b); console.log(this); } o = { name: 'xl' }; fn.apply(o,[1,2]);

    可以发现,这两种方法还是有区别的,即:call()接受的参数必须是连续参数,而apply()方法接收参数的形式是数组参数。

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注自由互联的更多内容!

    标签:this指向

    本文共计822个文字,预计阅读时间需要4分钟。

    JavaScript原型对象this指向问题如何复杂多变?

    目录:

    一、this 指向

    二、修改 this 指向

    1.call() 方法

    2.apply() 方法

    总结:

    一、this 指向

    JavaScript原型对象this指向问题如何复杂多变?

    在 JavaScript 中,this 关键字用于指代当前执行上下文中的对象。在构造函数中,this 指向新创建的对象实例。

    二、修改 this 指向

    1.call() 方法

    call() 方法允许你调用一个对象的一个方法,用另一个对象替换当前对象。语法如下:javascriptobject.call(thisValue, [arg1[, arg2[, …]]])

    2. apply() 方法apply() 方法与 call() 类似,但接受一个数组作为参数。语法如下:javascriptobject.apply(thisValue, [anArray])

    总结:

    一、this 指向

    在构造函数中,this 指向新创建的对象实例。

    那么,原型对象 this 的指向是什么呢?javascriptfunction Student(age, name) { this.age=age;}在这个例子中,当创建 Student 实例时,this 指向该实例对象。

    目录
    • 一、this指向
    • 二、修改this指向
      • 1、call()方法
      • 2、apply()方法
    • 总结

      一、this指向

      构造函数中的this 指向实例对象。那么原型对象this的指向呢?

      如下:

      function Student(age,name){ this.age = age; this.name = name; } var that; Student.prototype.score = function(){ console.log('孩子们成绩都很好!'); that = this; } var xl = new Student(18,'小熊'); xl.score(); console.log(that === xl);

      定义一个全局变量that,在score函数里面给它赋值,让其指向函数里面的this,调用实例对象的score方法,判断that和实例对象是否一致,如果一致,则说明原型对象this的指向是该实例。

      打印结果为:


      即原型对象里面放的是方法, 这个方法里面的this 指向的是 这个方法的调用者, 也就是这个实例对象。

      二、修改this指向

      1、call()方法

      写一个简单的两数相加的函数。

      function fn(a,b){ console.log(a+b); console.log(this); } fn(1,2)

      在函数内部打印this,调用函数,看其this的指向。


      可知this指向window对象,如果我们想让this指向我们新创建的一个对象,怎么操作呢?

      先定义一个对象,

      o = {};

      然后通过call()修改this指向,让其指向新创建的对象o

      o = { name: 'xl' }; fn.call(o,1,2);

      打印结果为:


      现在this指向新创建的对象o,即修改成功。

      2、apply()方法

      apply()和call()方法基本相同,这里就不赘述,直接上代码:

      function fn(a,b){ console.log(a+b); console.log(this); } o = { name: 'xl' }; fn.apply(o,[1,2]);

      可以发现,这两种方法还是有区别的,即:call()接受的参数必须是连续参数,而apply()方法接收参数的形式是数组参数。

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注自由互联的更多内容!

      标签:this指向