bind, call, apply

在未经过绑定的this会指向Windows

Bind

使用Bind会return 一个function

let Dennis = {    name: "Dennis",    age: 22}function hello() {    console.log(this) //指向Window    console.log(this.age)}hello() //undefined

http://img2.58codes.com/2024/20130419Qo7Dszql1s.png


所以这边使用bind method绑定在指定的物件身上

let Dennis = {    name: "Dennis",    age: 22}function hello() {    console.log(this) //指向Dennis    console.log(this.age) //22}const Hello = hello.bind(Dennis)Hello()

http://img2.58codes.com/2024/20130419pJPOs52ZVh.png


Call

使用call 会直接执行,所以不需要变数接住function再执行

let Dennis = {    name: "Dennis",    age: 22}function hello() {    console.log(this) //指向Dennis    console.log(this.age) //22}hello.call(Dennis)

并且 call可以传入参数

let Dennis = {    name: "Dennis",    age: 22}function hello(parameter) {    console.log(`My name is ${this.name} phonenumber is ${parameter}`)}hello.call(Dennis,) //My name is Dennis phonenumber is undefined

加入参数

let Dennis = {    name: "Dennis",    age: 22}function hello(parameter) {    console.log(`My name is ${this.name} phonenumber is ${parameter}`)}hello.call(Dennis, "0900123123") //My name is Dennis phonenumber is 0900123123

Apply

apply跟call几乎一样,不同于传入参数型态,若是array使用apply,string等等使用call

let c = ["000000"]let Dennis = {    name: "Dennis",    age: 22}function hello(parameter) {    console.log(`My name is ${this.name} phonenumber is ${parameter}`)}hello.apply(Dennis, c) //My name is Dennis phonenumber is 000000

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章