call/apply以及this指向的理解
生活随笔
收集整理的這篇文章主要介紹了
call/apply以及this指向的理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
javascript是面向對象的語言,Function也是一種對象,有自己的屬性和方法。call和apply就是js函數自帶方法,掛在Fucntion.prototype上。
一般調用某函數時,直接“函數名(參數)”的寫法即可,函數內部的this指向函數的調用者。
function add(a,b){console.log(this);return a b; } add(1,2) // 默認window調用,this指向windowvar math = {add:function(a,b){console.log(this);return a b;} } math.add(1,2) // this指向mathcall和apply的作用是給函數重新指定調用者,指定this的指向:
var name = "WINDOW"; var someone = {name: "yource" };/** 一般寫法 **/ function greet1(person) {var reply = "Hello, " person.name;console.log(reply) }greet1(someone); // Hello, yource/** 使用call/apply **/ function greet2() {var reply = "Hello, " this.name;console.log(reply) }greet2(); // Hello, WINDOW greet2.call(someone); // Hello, yource greet2.apply(someone); // Hello, yourcecall和apply的不同之處僅在于提供參數的方式:call使用一組參數列表,apply使用參數數組。
/*apply()方法*/ function.apply(thisObj[, argArray])/*call()方法*/ function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);apply最多只能有兩個參數:調用者thisObj和一個數組argArray。call可以接受多個參數,第一個參數與apply一樣,后面則是一串參數列表。
更多專業前端知識,請上 【猿2048】www.mk2048.com
總結
以上是生活随笔為你收集整理的call/apply以及this指向的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 禁用F12和鼠标右键,防止查看控制台代码
- 下一篇: localStorage/cookie