关键词:
对this的常见误解
this指向函数本身;
this指向函数的词法作用域;
this是在运行时进行绑定的,并不是在编写时,它的上下文取决于函数调用时的条件。
this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。
function identify() { return this.name.toUpperCase(); } function speak() { var greeting = “Hello, I’m” + identify.call(this); console.log(greetin); } var me = { name: “Kyle" }; var you = { name: “Reader" }; identify.call(me); identify.call(you); speak.call(me); speak.call(you);
对象属性引用链中只有最顶层或者说最后一层会影响调用位置
function foo() { console.log(this.a); } var obj2 = { a: 42, foo: foo }; var obj1 = { a: 2, obj2: obj2 }; obj1.obj2.foo(); // 42
判断this的顺序:
?函数是否在new中调用(new绑定)?如果是的话this绑定的是新创建的对象
var bar = new foo()
?函数是否通过call、apply(显示绑定)或者硬绑定调用?如果是的话,this绑定的是指定的对象
var bar = foo.call(obj2)
?函数是否在某个上下文对象中调用(隐式绑定)?如果是的话,this绑定的是那个上下文对象
var bar = obj1.foo();
?如果都不是的话,使用默认绑定。严格模式下,绑定到undefined,否则绑定到全局对象。
《你不知道的javascript》——this和对象原型
《你不知道的javascript》【3】——this和对象原型https://www.bilibili.com/video/BV1iE411P7UP 浅显的总结《你不知道的js》this指向 右查找的副作用:查找到顶层都找不到,就会抛出 查看详情
javascript中的this—你不知道的javascript上卷读书笔记
this是什么?this是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件。this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。当一个函数被调用时,会创建一个活动记录(有时... 查看详情
你不知道的javascript笔记
this和对象原型this是一个很特别的关键字,被自动定义在所有函数的作用域中//foo.count是0,字面理解是错误的 functionfoo(num){ console.log("foo:"+num); &n 查看详情
你不知道的javascript(上卷)小结
上卷主要讲了作用域、闭包、this以及原型方面的内容。整体在github上瞥了一眼了原版的ydkjs,到目前修改篇幅有点大了,this和原型部分的目录已经不见了,应该是改动不少。说说本书的小缺点,一是,有些东西已经和实际不一... 查看详情
js你不知道的javascript笔记-this-四种绑定规则-绑定优先级-绑定例外-箭头函数(代码片段)
文章目录1.为什么要用`this`2.关于`this`的误解2.1`this`不是指向函数自身2.2`this`不指向函数的词法作用域3.什么是调用栈与调用位置4.`this`的绑定规则4.1默认绑定`fun()`4.2隐式绑定`obj.fun()`隐... 查看详情
读书笔记《你不知道的javascript(上卷)》——第二部分this和对象原型(代码片段)
文章目录第6章行为委托6.1面向委托的设计6.1.1类理论6.1.2委托理论1.互相委托(禁止)2.调试6.1.3比较思维模型6.2类与对象6.2.1控件“类”ES6的class语法糖6.2.2委托控件对象6.3更简洁的设计反类6.4更好的语法反词法6... 查看详情
你不知道的javascript-上卷の读书笔记
...; 1— 作用域对JavaScript而言,大部分情况下编译发生 查看详情
《你不知道的javascript》系列分享专栏
《你不知道的JavaScript》系列分享专栏你不知道的JavaScript”系列就是要让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途《你不知道的JavaScript》已整理成PDF文档,点击可直接下载至本地查... 查看详情
javascript中的this-笔记
...,找了一些别人的博客看,又重新看了一下《你不知道的JavaScript》,感觉基本上是弄懂了,挑一些重点的地方记录一下,有些地方对我来说书上解释写的不够多,所以自己做下补充以方便理解,有理解错的地方还望指出。 ... 查看详情
《你不知道的javascript[中卷]》14——asynquence附录
《你不知道的JavaScript[中卷]》【14】——asynquence附录 查看详情
你不知道的this和class
Ohno....我的This又丢失了???为什么我用Class‘实例化‘出来的对象会相互影响???####这些问题都是因为JS的运行机制造成的。在JS中所有的一切都是对象,而this是对象的一个属性。在对象被调用时,this动态的根据上下文环境... 查看详情
你不知道的js来聊聊this(代码片段)
为什么要使用this?什么是this?来看一段代码functionidentify()returnthis.name.toUpperCase();functionspeak()vargreeting="Hello,I‘m"+identify.call(this);console.log(greeting);varme=name:"Kyle";varyou=name:"Reader" 查看详情
你不知道的javascript(中卷)笔记
<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>你不知道的javascript(中卷)</title></head><body><scripttype="text/javascript">/*//封装对象包装vara=newBool 查看详情
javascript你不知道的事儿
if(in)语句letnames=['Lily','Barry','Dendi','Boogie','Lily'];letnameNum=names.reduce((pre,cur)=>{if(curinpre){//pre中是否有cur属性pre[cur]++;}else{pre[cur]=1;//为pre这个对象添加cur属性,并且赋值为1}returnpre;},{ 查看详情
《你不知道的js(中卷)》关于this(代码片段)
一、关于this:一)、为什么要用this?functionidentity() returnthis.name.toUpperCase();varme= name:"Kyle";varyou= name:"Reader";identity.call(me);//Kyleidentity.call(you);//Reader? 观察上面的代码,使 查看详情
你不知道的javascript之类型
JavaScript是一门简单易用的语言,应用广泛,同时它的语言机制又十分复杂和微妙,即使经验丰富的开发人员也需要用心学习才能真正掌握。《你不知道的JavaScript》中是这样定义类型的:类型是值的内部特征,它定义了值的行为... 查看详情
你不知道的js-行为委托
1、面向委托的设计2、委托理论Task={setID:function(ID){this.id=ID;},outputID:function(){console.log(this.id)};};//让XYZ委托TaskXYZ=object.create(Task);XYZ.prepareTask=function(ID,Label){this.setID(ID);this.label=Label; 查看详情
《你不知道的js》——this全面解析(代码片段)
默认绑定//全局对象用于默认绑定functionfoo()console.log(this.a)vara=2;foo();//2//严格模式下,不能将全局对象用于默认绑定functionfoo()‘usestrict‘;console.log(this.a)vara=2;foo();//TypeError:thisisundefined//在严格模式下调用foo()则不影响默认绑定func 查看详情