在讲解 this 之前,先来看一段程序码,观察它的执行过程
var myName = 'weiwei';
function callName() {};
callName();
我们可以看见在进入 callName()
这段函式时,
会自动产生 this
,此时的 this
是指向全域 window
此时我们在函式中使用 this.myName
来取用全域中的 myName
var myName = 'weiwei';
function callName() {
console.log(this.myName);
};
callName();
我们能看见会回传全域中的 myName
,
因为此时 this
是指向全域的关系,
所以才会显示全域中的 myName
,
而今天要来介绍关於 this
的指向
当我们在执行函式时,this
都会自动产生,
它是一个保留字
我们可以在全域或是函式的执行环境中去执行它
今天针对物件的方法调用进行说明
在物件的方法调用中是最常用的,
这边只须记下两个重点就能掌握物件的方法调用
var myName = 'weiwei';
function callName() {
console.log(this, this.myName);
};
var family = {
myName: '小明',
callName: callName,
}
family.callName();
此时能看见 this
是指向 family
这个物件,
而 myName
的结果为 小明
,
因此可以了解 this
会指向前面调用它的物件
我们在看一个范例,当我们使用二阶以上的物件时,this 的指向会如何
var myName = 'weiwei';
function callName() {
console.log(this, this.myName);
};
var family = {
myName: '小明',
callName: callName,
wei: {
myName: '威威',
callName: callName,
},
};
family.callName();
family.wei.callName();
我们可以看见在呼叫 family
内的函式 callName()
时,
this
是指向 family
这个物件,
而在呼叫 family
的属性 wei
当中的函式 callName()
时,
this
是指向 wei
这个物件
接着我们来看最後一个范例,我们将 family.callName()
赋予到变数中,看结果如何
var myName = 'weiwei';
function callName() {
console.log(this.myName);
};
var family = {
myName: '小明',
callName: callName,
};
var callName = family.callName;
callName();
会看见结果为 weiwei
,
此时的 this
会指向全域,
因为 callName()
是直接在全域中执行,而不是在物件中执行,
因此 this
就会指向全域,而不会指向物件,
以上就是物件的方法调用中 this
的指向,我们明天见!!
<<: Day 26-如何测试 terraform 之一:长 code 短 code,能过测试的 code 才是好 code
>>: 【在厨房想30天的演算法】Day 11 资料结构:图 Graph
URL : https://app.hackthebox.eu/machines/144 IP :...
在Day13: HTTP这篇的范例中很常看到使用respone对象,而respone对象就是Seve...
在 Search Console 的概述中,第一个项目是流量成效,第二个项目是涵盖范围的有效网页数,...
在写程序的过程, 多多少少会遇到需要复杂处理的状况, Go的优点是很多使用情境已经有前人帮忙整理成套...
由于Debian 9默认的就是4.9的内核而且编译了TCP BBR的内容,所以可以直接通过参数开启。...