this 可说是 JavaScript中最复杂的概念,它是一个内部物件,代表函式(function)执行时所属的物件。
this 指向的值通常是「呼叫函式的物件」。随着呼叫的物件不同,执行(如console.log)结果也会不同。
本篇汇整 this 各大规则,做为其他说明资源之补充。
用new会建立空物件。印出整齐的变数参数。
不加new会印出global。
function hello() {
this.name = "13"
this.age = 18
console.log(this);
}
new hello() //hello()
function hello() {
"use strict"
console.log(this);
}
hello()
例: 此时hello() 相当於 global.hello(),所以接第3条
function hello() {
console.log(this) //global
}
hello()
若确定是谁(变数)呼叫(this),可用this取代变数名称:
const hero = {
name: "Keaton"
attack: function() {
console.log("hi, " + hero.name);
console.log("hi, " + this.name);
// console.log(this)
}
}
hero.attack()
没有人呼叫sayMyName(),故印出global全域变数
但若”悟空”改为let宣告,就抓不到global,改印出undefined
var name = "蝙蝠侠"
function sayMyName() {
var name = "罗宾"
console.log(this.name);
}
sayMyName() //印出"蝙蝠侠"
不会创造function。可以额外带参数。
例:三个参数各给一个console.log
function attack(xx, yy, zz) {
console.log(xx);
console.log(yy);
console.log(zz);
console.log(`${this.name} 使用绝招 ${this.action}`);
}
const hero = {
name: "蝙蝠侠",
action: "钞能力",
}
attack.call(hero, 1, 2, 3)
不会创造function。可以额外带参数,但须为物件(阵列 [1, 2, 3, 4, 5])。
回传新function,改变this的指向:
const function.bind(hero) //将this指向hero变数
heroAttack() //印出"蝙蝠侠 使用绝招 钞能力"
呼叫新function时可带参数:
const function.bind(hero) //将this指向hero变数
heroAttack(1, 2, 3)
>>: Flutter基础介绍与实作-Day27 旅游笔记的实作(8)
即时我们在不同元件分别引入CSS档,但打包後其实每个CSS还是会整个专案共用。 只想对单独元件设立自...
本系列文章同步发布於笔者网站 上一篇文章我们介绍了 Nova 的功能与其使用方法,本篇文章将会继续介...
.**电子密码本(ECB)**接受纯文本作为输入。 .**密码块链接(CBC)**接受“纯文本XOR...
延续昨天的 Plugin 实作,今天来看一下 Extension 及 Task 类别各要怎麽实作? ...
接到 User 说网路不通 , 你可以请 User 先看一下主机後方网路线是否灯号有亮或重新插拔一下...