分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

js重点--this关键字

发布时间:2023-09-06 02:30责任编辑:白小东关键词:js

推荐博客:https://www.cnblogs.com/huaxili/p/5407559.html

this是JavaScript的一个关键字,表示的不是对象本身,而是指被调用的上文。

主要用于以下四种环境:

1.直接调用,表示的是全局对象,window

2.作为对象方法被调用,表示的是该对象

3.作为构造函数被调用,表示的是创建的实例

4.可以使用apply(),call()改变this的表示对象,第一个参数就是this

直接调用,表示的是全局对象,window

 ???????var count = 1; ???????function func(){ ???????????console.log(this.count); ???????} ???????func(); ????//1 ???

调用函数的结果是1,即this指的是全局对象,window,所以count值为全局变量的值

作为对象方法被调用,表示的是该对象

        var count = 1;
        function func(){
            console.log(this.count);
        }

        var obj = {};
        obj.count = 2;
        obj.show = func;

        obj.show();     //2

func()方法作为对象的方法被调用,此时this表示的被调用的对象obj,所以count值为obj对象中的值count,若是对象obj中没有count属性,则为undefined

作为构造函数被调用,表示的是创建的实例

 ???????var count = 1; ???????function func(){ ???????????this.count = 2; ???????} ???????var Func = new func(); ???????console.log(count); ????????????//1 ???????console.log(Func.count); ????//2 ???

func()作为构造函数,创建了他的实例,此时this表示的是创建的实例Func

可以使用apply(),call()改变this的表示对象,第一个参数就是this

apply()是函数对象的一个方法,它的作用是改变函数的调用对象(实则是将某某对象的某个方法放到另一个好基友对象那里去执行),它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。同call()

 ???????var count = 1; ???????function func(){ ???????????console.log(this.count); ???????} ???????var obj = {}; ???????obj.count = 2; ???????????????func.call(); ???????//1 ????????func.call(obj); ????//2

可以使用apply()或是call()来改变this指向。此时this表示的是obj对象

嵌套函数作用域中的this

 ???????var count = 1; ???????function func(){ ???????????console.log(this.count); ???????????function func2(){ ???????????????console.log(this.count); ???????????} ???????????func2(); ???????} ???????var obj = {}; ???????obj.count = 2; ???????obj.show = func; ???????obj.show(); ????//2,1

嵌套函数被调用时并没有继承被嵌套函数的this引用,在嵌套函数被调用时,this指向全局对象。在有些应用中,我们需要在嵌套函数中读取调用被嵌套函数的对象的属性,此时可以声明一个局部变量保存this引用,

 ???????var count = 1; ???????function func(){ ???????????console.log(this.count); ???????????var self = this; ???????????function func2(){ ???????????????console.log(self.count); ???????????} ???????????func2(); ???????} ???????var obj = {}; ???????obj.count = 2; ???????obj.show = func; ???????obj.show(); ????//2,2

此时,嵌套函数与被嵌套函数中的this都表示了obj对象。

js重点--this关键字

原文地址:https://www.cnblogs.com/5201314m/p/10298944.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved