老生常谈 js中this的指向

 更新时间:2016年06月30日 11:38:01   投稿:jingxian  
下面小编就为大家带来一篇老生常谈 js中this的指向。小编觉得挺不错的, 现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在js中this的指向对于新手来说一定是个难题,但是如果你真正理解了的话,也就没什么问题啦,下面就来讲讲this吧。

JS中,this的值取决于调用的模式(调用对象),而JS中共有4种调用模式:

1.函数调用模式

当一个函数不是一个对象的属性时,当作函数俩调用,这时函数内的this指向全局对象(大对数情况下是window)

window.value=1;
function getValue(){
 console.log(this.value);
}
getValue();//输出1,此时的this指向window

2.方法调用模式

当一个函数是一个对象的属性时,我们称它为该对象的一个方法,当一个方法被调用时,this指向该对象

var Obj={
  value:2,
  getValue:function(){
       console.log(this.value);//输出2,this指向Obj
  }   
}

!!!该模式中,this到对象的绑定发生在方法被调用时

3.构造器调用模式

使用new调用的函数称为构造器函数,此时的this指向该构造器函数实例出来的对象

function main(val){
  this.value=val;
}
main.prototype.getValue=function(){
  console.log(this.value);
}

var fun=new main(3);
fun.getValue();
fun.value;//输出3,this指向main的实例对象fun

4.apply/call调用模式以及bind

apply、call、bind方法可以让我们设定调用者中的this指向谁

function showValue(){
  console.log(this.value);
}
var obj={
  value:4
}
showValue.call(obj)//输出4,this指向了obj对象

ECMA5中新增了bind方法,具体用法可以google一下,这里是演示this绑定的用法

function showValue(){
  console.log(this.value);
}
var obj={
  value:4
}
var showValue2=showValue.bind(obj);
showValue2()//输出4,this指向了obj对象

bind有很多种用法,可以自己去查阅一下哦

以上这篇老生常谈 js中this的指向就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于three.js实现的3D粒子动效实例代码

    基于three.js实现的3D粒子动效实例代码

    这篇文章主要给大家介绍了关于如何基于three.js实现的3D粒子动效的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • JS 实现导航栏悬停效果

    JS 实现导航栏悬停效果

    使用js实现的导航栏悬停效果在IE上,滚动滚动条或者鼠标滚轮的时候,导航栏会抖动;而在Chrome和FF上有没有任何问题
    2013-09-09
  • 小程序从零入手之WXSS模版语法汇总

    小程序从零入手之WXSS模版语法汇总

    wxss样式语法包括rpx尺寸单位,样式导入,全局与局部样式,常用的样式属性,包括尺寸、边框、边距、文本、颜色等等,下面这篇文章主要给大家介绍了关于小程序从零入手之WXSS模版语法汇总的相关资料,需要的朋友可以参考下
    2023-01-01
  • 纯js和css实现渐变色包括静态渐变和动态渐变

    纯js和css实现渐变色包括静态渐变和动态渐变

    用javascript实现一下所谓的动态渐变,考虑动态原因就不上图了,我来简单介绍下思路
    2014-05-05
  • 浅谈JavaScript中的parseInt()的妙用

    浅谈JavaScript中的parseInt()的妙用

    本文主要介绍了JavaScript中的parseInt()的妙用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • JavaScript 中如何将秒转换为分秒

    JavaScript 中如何将秒转换为分秒

    JavaScript中将秒转换为分钟和秒,通过将秒数除以 60 得到整分钟数,获取剩余的秒数,本文通过实例代码介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-09-09
  • 某人初学javascript的时候写的学习笔记

    某人初学javascript的时候写的学习笔记

    JavaScript对象就是一组属性(方法)的集合 在该语言中如果变量名或方法名不符合声明规范,则一定得用方括号“ [] ”引用它
    2010-12-12
  • JS实现灵巧的下拉导航效果代码

    JS实现灵巧的下拉导航效果代码

    这篇文章主要介绍了JS实现灵巧的下拉导航效果代码,通过自定义js插件脚本dropdown.js实现简单的下拉导航效果的功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • javascript格式化日期时间方法汇总

    javascript格式化日期时间方法汇总

    本文给大家汇总介绍了javascript格式化日期时间的五种常用方法,个人对第五种个性化输出时间比较有兴趣,基本上只要项目中能用到都是使用第五种,推荐给小伙伴们。
    2015-06-06
  • ModelDialog JavaScript模态对话框类代码

    ModelDialog JavaScript模态对话框类代码

    ModelDialog JavaScript模态对话框类代码,需要的朋友可以参考下。
    2011-04-04

最新评论