js this知识点整理

this它总是返回一个对象。

简单说,this就是属性或方法“当前”所在的对象。

var person={
    name:'张三',
    describe:function(){
        return "姓名:"+this.name
//this.name   this表示name属性所在的那个对象。函数也是一种对象,但this不指向函数,指向函数所在的对象
    }
};
console.log(person.describe()); //姓名:张三    person.name

函数也是一种对象,但this不指向函数,指向函数所在的对象

改变this指向

由于对象的属性可以赋给另一个对象,所以属性所在的当前对象是可变的,即this的指向是可变的。

var person={
    name:'张三',
    describe:function(){
        return "姓名:"+this.name
    }
};

var B={
    name:'李四'
}
B.describe=person.describe;
console.log(B);//{ describe:function(){return "姓名:"+this.name  }
console.log(B.describe());//姓名:李四

使用场合

this使用主要找调用this的方法的当前对象

this主要有以下几个使用场合。

(1)全局环境

全局环境使用this,它指的就是顶层对象window

上面代码说明,不管是不是在函数内部,只要是在全局环境下运行,this就是指顶层对象window

this==window //true

function f() {
  console.log(this===window);
}
f() //true

(2)构造函数

构造函数中this 指向实例对象

var Obj = function (p) {
  this.p = p;
};

var o = new Obj('Hello World!');

//o.p  : 'Hello World!'  



(3)对象的方法

var obj ={
  foo: function () {
    console.log(this);
  }
};
//obj.foo()  输出 foo: function () {console.log(this);}

绑定this方法

作用域:

JS中的作用域是一个存储变量、函数以及对象的位置,每个变量、函数和对象都被存储在一个特定的作用域中,它是指变量和函数在代码中的可访问范围,作用域决定了代码中哪些部分可以访问特定的变量和函数,通过作用域,我们可以将变量和函数封装在不同的作用域中,使其在合适的范围内可访问

call()

函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。

var obj = {};
var f = function () {
  return this;
};

f() === window // true
f.call(obj) === obj // true  函数call方法,可以修改函数中this指向

var objA={a:1};

console.log(f.call(objA)===objA);//true
//说明 函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。


面代码中,全局环境运行函数f时,this指向全局环境(浏览器为window对象);call方法可以改变this的指向,指定this指向对象obj

由于函数可以在不同的运行环境执行,所以需要有一种机制,能够在函数体内部获得当前的运行环境(context)。所以,**this**就出现了,它的设计目的就是在函数体内部,指代函数当前的运行环境。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值