国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

apply 與 call 詳細(xì)深入理解

Hegel_Gu / 3505人閱讀

apply 與 call 介紹
function f1(x, y) {
    console.log("結(jié)果是:" + (x + y) + this);
}
f1(10, 20); //函數(shù)的調(diào)用
// 結(jié)果是:30[object Window]

// 此時(shí)的 f1 實(shí)際上是當(dāng)作對(duì)象來(lái)使用的,對(duì)象可以調(diào)用方法
f1.apply();  // 結(jié)果是:NaN[object Window]
f1.call();   // 結(jié)果是:NaN[object Window]

f1.apply(null);  // 結(jié)果是:NaN[object Window]
f1.call(null);  // 結(jié)果是:NaN[object Window]

applycall 方法中如果沒(méi)有傳入?yún)?shù),或者傳入的是null,那么調(diào)用該方法的函數(shù)對(duì)象中的 this 就是默認(rèn)的 window

applycall 都可以讓函數(shù)或者方法來(lái)調(diào)用,傳入?yún)?shù)和函數(shù)自己調(diào)用的寫(xiě)法不一樣,但是效果是一樣的。

f1.call(null,10,20);  // 結(jié)果是:30[object Window]
f1.apply(null,[10,20]);  // 結(jié)果是:30[object Window]

基本使用

function f2(x, y ){
    console.log("結(jié)果:"+(x+y)+"  "+ this.age );
}
window.f2(10, 20);  //結(jié)果:30  undefined
// obj是一個(gè)對(duì)象
var obj = {
    age: 10,
    sex: "男"
};
window.f2.apply(obj,[10, 20]);  //結(jié)果:30  10
window.f2.call(obj,10,20);  //結(jié)果:30  10
console.dir(obj);  // age: 10 sex: "男"
applycall的作用:改變this的指向
applycall可以改變 this 的指向
例子1:用于方法
function Person(age, sex){
    this.age = age;
    this.sex = sex;
}
//通過(guò)原型添加方法
Person.prototype.sayHi=function(){
    console.log("您好呀:"+this.sex);
}
var per = new Person(10,"男");
per.sayHi(); // 您好呀:男

function Student(name, sex){
    this.name = name;
    this.sex = sex;
}
var stu=new Student("小明", "女");
per.sayHi.apply(stu); // 您好呀:女
per.sayHi.call(stu);  // 您好呀:女
// stu 沒(méi)有 sayHi(),但是通過(guò)apply或call可以讓它調(diào)用per的sayHi().
例子2:用于函數(shù)
function f(x, y){
    console.log("結(jié)果是:"+(x+y)+"  "+this);
    return "此時(shí)的this是"+this;
}
// apply和call調(diào)用
var r1=f.apply(null,[1,2]); // 此時(shí)f中的this是window
console.log(r1);
//結(jié)果是:3  [object Window]
// 此時(shí)的this是[object Window]
var r2=f.call(null,1,2); // 此時(shí)f中的this是window
console.log(r2);
 //結(jié)果是:3  [object Window]
// 此時(shí)的this是[object Window]

// 改變this的指向
var obj={
    sex: "男"
}
// 本來(lái)f函數(shù)是window對(duì)象的,但是傳入obj之后,f函數(shù)就是obj對(duì)象的
var r3=f.apply(obj,[1,2]); // 此時(shí)f中的this是obj
console.log(r3);
// 結(jié)果是:3  [object Object]
// 此時(shí)的this是[object Object]
var r4=f.call(obj,1,2); // 此時(shí)f中的this是obj
console.log(r4);
// 結(jié)果是:3  [object Object]
// 此時(shí)的this是[object Object]
applycall的使用方法總結(jié) apply的使用方法:
函數(shù)名字.apply(對(duì)象,[參數(shù)1,參數(shù)2,...]);
方法名字.apply(對(duì)象,[參數(shù)1,參數(shù)2,...]);
call的使用方法:
函數(shù)名字.call(對(duì)象,參數(shù)1,參數(shù)2,...);
方法名字.call(對(duì)象,參數(shù)1,參數(shù)2,...);
applycall的不同:

參數(shù)傳遞的方式是不一樣的

使用場(chǎng)景
只要是想使用別的對(duì)象的方法,并且希望這個(gè)方法是當(dāng)前對(duì)象的,那么就可以使用apply或者是call的方法改變this的指向。

applycall方法實(shí)際上并不在函數(shù)這個(gè)實(shí)例對(duì)象中,而是在Functionprototye中。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/103979.html

相關(guān)文章

  • JS程序

    摘要:設(shè)計(jì)模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開(kāi)始接觸的時(shí)候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊蹋駝t只會(huì)讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識(shí)只有分享才有存在的意義。 是時(shí)候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評(píng)論0 收藏0
  • 從Ecma規(guī)范深入理解this

    摘要:本文總結(jié)了的各種情況,并從規(guī)范的角度探討了的具體實(shí)現(xiàn),希望對(duì)大家理解有所幫助。規(guī)范規(guī)范里面詳細(xì)介紹了的實(shí)現(xiàn)細(xì)節(jié),通過(guò)閱讀規(guī)范,我們可以更準(zhǔn)確的理解上述四種情況到底是怎么回事。由于本人能力有限,如有理解錯(cuò)誤的地方還望指出。 this是面向?qū)ο缶幊讨械囊粋€(gè)概念,它一般指向當(dāng)前方法調(diào)用所在的對(duì)象,這一點(diǎn)在java、c++這類比較嚴(yán)格的面向?qū)ο缶幊陶Z(yǔ)言里是非常明確的。但是在javascript...

    rottengeek 評(píng)論0 收藏0
  • 深入淺出JavaScript之call()、apply()方法

    摘要:的作用在中,方法和方法都是為了改變函數(shù)運(yùn)行時(shí)上下文而存在的,換句話說(shuō)就是為了改變函數(shù)體內(nèi)部的指向。歡迎前端大牛糾正錯(cuò)誤,如有錯(cuò)誤我會(huì)及時(shí)改正。 寫(xiě)在前面: 隔了很長(zhǎng)時(shí)間了,也不知道寫(xiě)點(diǎn)什么。最近一直在研究ES6,一直想寫(xiě)出來(lái)的文章能對(duì)初學(xué)者或者是在學(xué)習(xí)JS路上有所幫助的。這就是我的初衷。 call、apply的作用 在JavaScript中,call()方法和apply()方法都是為了...

    Cympros 評(píng)論0 收藏0
  • 學(xué)習(xí)JavaScript之this,call,apply

    摘要:在全局對(duì)象中調(diào)用,自然讀取的是全局對(duì)象的值構(gòu)造器調(diào)用說(shuō)明作為構(gòu)造器調(diào)用時(shí),指向返回的這個(gè)對(duì)象。最直觀的表現(xiàn)就是,去看一些優(yōu)秀框架的源代碼時(shí),不再是被繞的暈乎乎的。 學(xué)習(xí)起因: 在之前的JavaScript學(xué)習(xí)中,this,call,apply總是讓我感到迷惑,但是他們的運(yùn)用又非常的廣泛。遂專門花了一天,來(lái)弄懂JavaScript的this,call,apply。中途參考的書(shū)籍也很多,以...

    wenhai.he 評(píng)論0 收藏0
  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸耍虼宋闹兄豢炊?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫(xiě)的) this 的值到底...

    blair 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<