js的apply方法使用详解,绝对NB
情況1:
作為函數調用
var yazi={
?? ?jiao:function(){
?? ??? ?var ji=function(){
?? ??? ??? ?console.log(this);
?? ??? ?}
?? ??? ?ji();
?? ?}
}
yazi.jiao();//window
?
function jiao(){
console.log(this);
}
jiao();//window
當一個函數并非一個對象的屬性時,那么它就是被當做函數來調用的。在此種模式下,this被綁定為全局對象,在瀏覽器環境下就是window對象
?
2.方法調用式
var yazi={
jiao:function(){
console.log(this);
}
}
yazi.jiao();//yazi
當函數被保存為一個對象的屬性時,它就可稱為這個對象的方法。當一個方法被調用時,this被綁定到這個對象上。如調用表達式包含一個提取屬性的動作
?
3.構造函數式
function person(){
? ? name:'hanhongshuai';
sleep:function(){
console.log(this.name);
}
}
new person.sleep();
如果在一個函數前面加上new關鍵字來調用,那么就會創建一個連接到該函數的prototype成員的新對象,同時,this會被綁定到這個新對象上
?
4.apply,call方法模式:
var yazi={
?shengyin:'嘎嘎';
? jiao:function(){
console.log(this.shengyin);
}
}
var ji={shengyin:'jiji';}
yazi.jiao.call(ji);//jiji
js中,函數也是對象,所有函數對象都有兩個方法:apply和call,這兩個方法可以讓我們構建一個參數數組傳遞給調用函數,允許我們改變this的值
?
轉載于:https://www.cnblogs.com/hhs6880/p/6638880.html
總結
以上是生活随笔為你收集整理的js的apply方法使用详解,绝对NB的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下动态共享库加载时的搜索路径详
- 下一篇: Linux之时钟中断