apply和call用法
生活随笔
收集整理的這篇文章主要介紹了
apply和call用法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
apply語法
func.apply(name, [array])- 第一個參數(shù)指定函數(shù)體內(nèi)this對象的指向.
- 第二個參數(shù)為一個帶下標的集合,可以是數(shù)組或類數(shù)組,apply方法把這個集合中的元素作為參數(shù)傳遞給被調(diào)用的函數(shù)
call語法
- 第一個參數(shù):代表函數(shù)體內(nèi)this指向
- 第二個參數(shù):數(shù)量不固定,每個參數(shù)依次傳入函數(shù) ```javascript
```
當使用call或則apply的時候, 如果我們傳入的第一個參數(shù)是null. 函數(shù)體內(nèi)的this會指向默認的宿主對象,在游覽器中則是window
var func = function( a, b, c ){alert ( this === window ); // 輸出true }; func.apply( null, [ 1, 2, 3 ] );但如果是在嚴格模式下,函數(shù)體內(nèi)的this還是為null:
var func = function( a, b, c ){ "use strict"; alert ( this === null ); // 輸出true } func.apply( null, [ 1, 2, 3 ] );有時候我們使用call或者apply的目的不在于指定this指向,而是另有用途,比如借用其他對象的方法。
那么我們可以傳入null來代替某個具體的對象:
call和apply的用途
var obj1={name: '李小龍' } var obj2={name: '蕭薰' } window.name = 'window' var getName = function(){console.log(this.name) }; getName(); //輸出:window getName.call(obj1); //輸出:李小龍 getName.call(obj2); //輸出:蕭薰當執(zhí)行g(shù)etName.call( obj1 )這句代碼時,getName函數(shù)體內(nèi)的this就指向obj1對象
this 錯誤的情況
document.getElementById( 'div1' ).onclick = function(){ alert( this.id ); // 輸出:div1 var func = function(){ alert ( this.id ); // 輸出:undefined } func(); };修正this
document.getElementById( 'div1' ).onclick = function(){ var func = function(){ alert ( this.id ); // 輸出:div1 } func.call( this ); };原文鏈接: http://www.jianshu.com/p/c942d58659c6
轉(zhuǎn)載于:https://www.cnblogs.com/lovellll/p/10109617.html
總結(jié)
以上是生活随笔為你收集整理的apply和call用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打包 压缩 命令tar zip
- 下一篇: 梦到白菜上很多虫子怎么回事