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)