版权声明:保留原博文链接及作者的情况下,请尽情转载吧!!!
this是面向对象编程中的一个概念,一般指向当前方法调用所在的对象,但在JS中灵活很多,为什么这么说呢?那是因为:
So… 谁调用这个函数或方法,this关键字就指向谁这话是并不是完全准确的
说到这个,就不得不说JS中this的绑定额;JS中有五种绑定模式及一种特殊绑定模式【ES6的箭头函数】;
var a = 10086;
function test1(){
console.log(this.a);
}
test1();
function test2(){
"use strict"
console.log(this.a);
}
test2();
function test3(a){
this.a = a;
console.log(this.a);
console.log(a);
}
var testv3 = new test3(10086);
var obj = {a:2}
function test4(){
console.log(this.a)
}
var testv4 = test4.call(obj);
function test5(){
console.log(this.a)
}
var obj2 = {a:10086}
var testv7 = test7.bind(obj2)
testv7()
function test6(){
console.log(this.a)
}
var obj3 = {
a:10086,
test6:test6
}
obj3.test6()
var obj1 = {a:789 , obj2:obj2}
var obj2 = { a:456, test8:test8}
obj1.obj2.test6();
undefined
,null
作为this绑定对象参数传入call
,apply
,bind
,会采用默认绑定规则,而参数依旧传入;比如你有一个数组想要依次分割传入一个函数中,apply
就可以做到;当然,ES6中的拓展运算符也可以做到...
【非常实用的一个操作符】,后续再写吧::
作为一个新的绑定操作符,该操作符会将左值和右值(一个函数)进行绑定;若是能开展,this
在一些情况下都可以不用写了