javascript中的this指向

2019-06-17  本文已影响0人  我欢喜喜欢你

一般情况下,谁调用就指向谁

普通模式下,普通函数中,指向window;

function foo (){

    console.log(this);//指向window

}

foo ();

普通模式下全局函数可以看成window的方法,相当于window.foo ();

严格模式下,普通函数中,指向undefined;

“use strict”

function foo (){

    console.log(this);//指向undefined

}

foo ();

相当于window.foo ();但是不等于window.foo ();所以是undefined;

image.png

settimeout 是全局方法,所以this的指向为window;

箭头函数的this指向

this指向定义这个箭头函数时所在环境中的this;在哪个地方定义,就指向那个地方的this;

var name = "window";

var obj = {

name : "obj",

sayHello : ()=>{

console.log(this.name);//window

}

}

//相当于

var obj = {};

obj.name = "obj";

obj.sayHello = ()=>{

console.log(this.name);//所以此时this的指向还是window

}

obj.sayHello();

改变this指向:Call apply bind;

var obj1 = {

name : "obj1",

sayHello : function(a){

console.log(this.name);

console.log(a);

}

}

var obj2 = {

name : "obj2"

}

obj1.sayHello.call(obj2,10);//指向call里的第一个参数,参数列表形式

obj1.sayHello.apply(obj2,[20]);//返回值为obj2,需要将参数放到数组里边

obj1.sayHello.bind(obj2)(30);//返回值为obj2

//取数组中的最大值最小值及其索引

var arr = [11,23,-5,1,22];

var minVal = Math.min.apply(null,arr);//当不涉及到this指向的时候直接给null就可以

console.log(minVal);

var minIndex = arr.indexOf(minVal);

console.log(minIndex);
上一篇下一篇

猜你喜欢

热点阅读