javascript实现方法调用与方法触发小结

 更新时间:2016年03月26日 15:45:57   投稿:hebedich  
这篇文章主要介绍了javascript实现方法调用与方法触发小结的相关资料,需要的朋友可以参考下

在js中,this关键字是一个比较让人有意思的东西,但是它的指向经常让初学者摸不着头脑。

  其实要理解这个关键字,需要理清两个问题——“方法的调用和方法的触发”

  下面先看一段代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>function</title>
<script>
function showThis(){
  console.info(this);
}
  
function Test1(){
  this.f=showThis;
}
function Test2(){
  this.f=function(){
    showThis();
  }
}

showThis();//window
new Test1().f();//Test1  
new Test2().f();//window
</script>
</head>
<body>
</body>
</html> 

  20行打印出window对象,这个很容易理解,但是21行打印出Test1的实例对象,而22行却打印出window对象。查看Test1和Test2的构造,发现方法f最终都执行了showThis方法。但是showThis中的this指向却不同。这是因为Test1中的f方法直接指向showThis,new Test1().f()是以Test1 的实例直接调用showThis方法,调用者是Test1的实例。而new Test2().f()是在Test2的实例方法f中触发window对象的showThis方法,其中的this就是指向其调用者window而不是触发者Test2的实例。

  至此可以发现。this指向的是调用者,而触发者只是推进调用者执行指定方法而已。

相关文章

  • 如何让你的JS代码更好看易读

    如何让你的JS代码更好看易读

    本篇主要给广大JS程序员介绍了怎么能让自己写的JS代码好看易读,分析了几个需要注意的地方和方法,一起来学习下。
    2017-12-12
  • JavaScript进阶教程(第四课第一部分)

    JavaScript进阶教程(第四课第一部分)

    JavaScript进阶教程(第四课第一部分)...
    2007-04-04
  • javascript的面向对象编程一起来看看

    javascript的面向对象编程一起来看看

    这篇文章主要为大家详细介绍了javascript的面向对象编程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 简介JavaScript中的sub()方法的使用

    简介JavaScript中的sub()方法的使用

    这篇文章主要介绍了JavaScript中的sub()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • JavaScript中for循环的使用详解

    JavaScript中for循环的使用详解

    这篇文章主要介绍了JavaScript中for循环的使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • location.href用法总结(最主要的)

    location.href用法总结(最主要的)

    location.href在使用中很是频繁,接下来为大家详细介绍下location.href主要的使用方法有哪些,感兴趣的朋友可以参考下
    2013-12-12
  • JavaScript DOM学习第四章 getElementByTagNames

    JavaScript DOM学习第四章 getElementByTagNames

    HTML有一些相关有不同tag名字的相关元素,比如H1-H6或者input,select和TEXTAREA。getElementByTagName只能取得那些有相同tag名称的元素,所以你不能用他来取得所有的标题或者整个表单内容。
    2010-02-02
  • 2019年度web前端面试题总结(主要为Vue面试题)

    2019年度web前端面试题总结(主要为Vue面试题)

    转眼2019又要过去了,作为一名前端码农,又熬过一个没日没夜的年头,头发又少了不少,去年的学习计划一半也没完成,唉。。。 现在为大家总结一下这一年面试的几家公司的关于前端面试题吧
    2020-01-01
  • 浅谈一下forward和redirect的区别

    浅谈一下forward和redirect的区别

    这篇文章主要介绍了forward和redirect的区别,在前端开发中,有很多刚入行的朋友不了解这两者之间的区别,那么这篇文章可以带给你新的认知,需要的朋友可以参考下
    2023-03-03
  • 简介JavaScript中fixed()方法的使用

    简介JavaScript中fixed()方法的使用

    这篇文章主要介绍了JavaScript中fixed()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06

最新评论