美文网首页
JS申明函数的方法和函数中this的指向

JS申明函数的方法和函数中this的指向

作者: 古水木 | 来源:发表于2019-05-25 12:06 被阅读0次

最近在学js,了解到js函数的重要性,因此做一个总结。

1.js函数申明方式

1.直接申明

function fn(){
  console.log(1)
}
fn()

2.定义变量来申明

var fn = function(){
  console.log(1)
}
fn()

注意:上面两种申明的差异,js在执行时,会先把所有申明变量和函数提前,上面第二种方式来申明的函数,只是变量提前,函数申明没有提前。

3.构造函数申明

var fn = new Function()
fn()

1.js函数调用方式和内部this的指向

1.普通调用

function fn(){
  console.log(1)
}
fn()

此处this指向window对象

2.方法调用

var obj={
    fn:function(){
        console.log(1);
    }
}
obj.fn()

此处this指向obj对象

3.作为构造函数调用

var fn = new Function()
fn()

此处this指向构造函数创建的对象

4.作为时间调用

假设有一个按钮点击事件

btn.onclick=function(){
  console.log(this)
}

此处this指向触发该事件的对象

5.作为定时器调用

setTimeout(function(){
  console.log(this)
},1000)

此处this指向window对象,因为是window在调用这个函数

总结:函数this指向的特点

函数内部this由函数调用时来确定。

下面有两道比较经典的例题供参考:

1.

function fn(){
    console.log(this)
}
var obj={
    fn:fn
}
obj.fn()

此题this指向的是obj对象,因为是obj在调用这个函数

2.

var obj={
    fn:function fn(){
        console.log(this)
    }
}
var fn = obj.fn(;
fn()

此处this指向window对象

相关文章

  • JS申明函数的方法和函数中this的指向

    最近在学js,了解到js函数的重要性,因此做一个总结。 1.js函数申明方式 1.直接申明 2.定义变量来申明 注...

  • es6(class)

    js中的私有方法 _privateMethod(){}形式 关于this 函数中的this指向函数的调用者unde...

  • 函数指针

    函数也可以作为参数传递给其他的函数,传递的是函数的地址,函数的地址就是函数名. 申明函数指针 和申明指向某种数据类...

  • this

    this在js中主要研究的是函数中的this,不代表函数外没有this,函数外的this指向window js中的...

  • 什么时候不可用箭头函数 ()=> ...

    箭头函数 1.定义对象和方法 JS 中对象方法的定义方式是在对象上定义一个指向函数的属性,当方法被调用的时候,方法...

  • JavaScript中this使用

    JS中this指向 this在全局作用于下指向window 函数中使用的this指向: 函数在调用时,JavaSc...

  • 函数中的this

    一,普通函数中的this指向,二,定时器方法中的this指向,三,构造函数中的this指向,四,对象方法中的thi...

  • 关于js中this指向的那些事

    this是JS中的关键字,this的指向中函数定义时确定不了,只有 函数指向的时候才能确定this到底指向谁,th...

  • 关于js函数中this的指向的问题

    @(javascript)[JavaScript中this的指向] 关于js函数中this的指向的问题 javas...

  • js 变量作用域和函数作用域

    js变量作用域可分为:“全局变量”和“局部变量” “全局变量”:申明在函数之外的变量 “局部变量”:申明在函数体中...

网友评论

      本文标题:JS申明函数的方法和函数中this的指向

      本文链接:https://www.haomeiwen.com/subject/dyhsnqtx.html