纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

JavaScript原型对象this指向问题 详解JavaScript原型对象的this指向问题

bear*6   2021-11-18 我要评论
想了解详解JavaScript原型对象的this指向问题的相关内容吗bear*6在本文为您仔细讲解JavaScript原型对象this指向问题的相关知识和一些Code实例欢迎阅读和指正我们先划重点:JavaScript原型对象,JavaScript,this指向下面大家一起来学习吧。

一、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()方法接收参数的形式是数组参数。

总结

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


相关文章

猜您喜欢

网友评论

Copyright 2020 www.tdogsoftware.com 【零度软件园】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式