JS 核心语言基础语法 之 面向对象第三讲this
【摘要】 this,在js中是个容易让人晕头转向的小东东,因为有的时候,你弄不清楚this的指向,正常情况下使用this,记住一句话就够用了“谁最终调用,就指向谁”,但是当你使用call或者apply方法时,需要注意this的指向会被改变。下面我们先来看下this的指向,具体有哪几种:第一种情况:当this作为函数来调用的时候,this指向全局window window.name = "...
this,在js中是个容易让人晕头转向的小东东,因为有的时候,你弄不清楚this的指向,正常情况下使用this,记住一句话就够用了“谁最终调用,就指向谁”,但是当你使用call或者apply方法时,需要注意this的指向会被改变。下面我们先来看下this的指向,具体有哪几种:
第一种情况:当this作为函数来调用的时候,this指向全局window
window.name = "globalName"; var myObj = { name:"sven", getName:function(){ alert(this.name); } }; myObj.getName(); //sven var getName = myObj.getName; getName(); //globalName
第二种情况:当this作为对象的方法和属性来调用的时候,this指向该对象
var obj = { a:1, getA: function(){ alert(this === obj); //true alert(this.a); //1 } }; obj.getA();
第三种情况:当this作为构造函数来调用的时候,this指向创建出来的新对象
var myClass = function(){ this.name = 'sven'; }; var obj = new myClass(); alert(obj.name);
第四种情况:让this强制指向某个对象,call,apply
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="div1">我是div1</div> <script> document.getElementById = (function(func){ return function(){ return func.apply(document, arguments); } })(document.getElementById); var getId = document.getElementById; var div = getId('div1'); console.log(div); </script> </body> </html>
以上就是关于js中this指向问题的总结,第四种情况呢,示例使用的是apply方法,也可以使用call方法,只不过二者传的参数不同而已~
关于导图中设计模式这一部分的知识呢,我不打算在JS 核心语言基础语法这一系列的课程里分享啦,我还没有完全整理好,以后整理清晰了,再分享给大家,那JS 核心语言基础语法这个系列的知识点,就跟大家一起总结分享完啦~
寄语共勉:有种力量叫放大目标,有种智慧叫把问题缩小,我们的终极目标是学好JavaScript,小目标是尽量掌握好每个小知识点~
拜拜~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)