Function.prototype.call.apply作用詳解
關於call()和apply()基本用法可以參閱如下兩篇文章:
(1).call方法參閱JavaScript call()一章節。
(2).apply方法參閱JavaScript apply()一章節。
網上看到一段用法比較奇怪的程式碼,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼Function.prototype.apply.call(Math.floor, undefined, [1.75])
重新進行一下分組會更清晰:
[JavaScript] 純文字檢視 複製程式碼(Function.prototype.apply).call(Math.floor, undefined, [1.75])
任何函式都是Function類的物件例項,所以Math.floor方法物件具有apply方法。
所以上面的程式碼可以修改等價於如下程式碼:
[JavaScript] 純文字檢視 複製程式碼Math.floor.apply(undefined, [1.75])
上面的程式碼就很好理解了,就是一個普通的apply方法的應用。
即便是Math.floor物件沒有apply方法,也是會轉變為上面的格式,這就是call方法語法規定。
再來看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var num=Function.prototype.apply.call(function (b) { return this.a + b }, {a:2},[1.75]) console.log(num);
相關文章
- extern作用詳解
- JavaScript作用域詳解JavaScript
- java中static作用詳解Java
- ContextLoaderListener作用詳解Context
- php中declare的作用詳解PHP
- @Transactional詳解(作用、失效場景與解決方法)
- 關於C++中物件與類的詳解及其作用詳解C++物件
- 詳解 MySql InnoDB 中意向鎖的作用MySql
- Spring-bean作用域scope詳解SpringBean
- 交換機的作用、功能和工作原理詳解
- 詳解python的super()的作用和原理Python
- Maven中的dependency的scope作用域詳解Maven
- Java中static變數作用和用法詳解Java變數
- 詳解數字簽名的含義及作用
- 詳解 JS 變數、作用域及記憶體JS變數記憶體
- JavaScript 變數、作用域及記憶體詳解JavaScript變數記憶體
- ES6深入學習(一)塊級作用域詳解
- Angular中innerHTML標籤的樣式不起作用詳解AngularHTML
- 詳解Spring中Bean的作用域與生命週期SpringBean
- Linux系統下各個目錄的作用詳解!Linux
- android Activity的啟動模式 作用簡析+demo詳解Android模式
- android 混淆規則作用,Android程式碼混淆詳解Android
- Python作用域詳述Python
- 什麼是閘道器?閘道器的作用是什麼,閘道器的作用詳解
- Go 程式碼塊與作用域,變數遮蔽問題詳解Go變數
- 圖解javascript作用域圖解JavaScript
- 電腦記憶體條的作用、選購技巧以及注意事項詳解記憶體
- 詳解執行緒池的作用及Java中如何使用執行緒池執行緒Java
- java虛擬機器記憶體區域的劃分以及作用詳解Java虛擬機記憶體
- js 變數的作用域詳解、生存週期,以及一些小細節。JS變數
- ES6 變數作用域與提升:變數的生命週期詳解變數
- 註解式專案開發!詳細解析Java中各個註解的作用和使用方式Java
- (摘)sql-索引的作用(超詳細)SQL索引
- spring @component 的作用詳細介紹Spring
- 虛解構函式的作用函式
- 《前端實戰總結》之變數提升,函式宣告提升及變數作用域詳解前端變數函式
- 【TUNE_ORACLE】PGA_AGGREGATE_LIMIT詳解(二)PGA_AGGREGATE_LIMIT的作用OracleMIT
- Java Web(五) JSP詳解(四大作用域九大內建物件等)JavaWebJS物件