摘要:網上對于和的解釋已經非常多了,但是感覺看完之后,還不是特別理解其作用。對于最直接的理解就是繼承。說太多反而不好理解。
網上對于call和apply的解釋已經非常多了,但是感覺看完之后,還不是特別理解其作用。
對于call、apply最直接的理解就是繼承。
我們在面向對象編程的時候,經常會這樣寫:
function People(name){ this.name = name } People.prototype={ food:"fish", say: function(){ console.log("My Name is "+ this.name +",I love "+this.food); } }
var people = new People("www.ghugo.com"); people.say();
以上代碼應該很好理解,這時如果我們有一個對象:
hugo2 = {food : "bone"}
我們不想對它重新定義say方法,那么我們可以通過call或apply用People的say方法:
people.say.call(hugo2,"hugo");
也就相當于是這樣調用:
hugo2.say() //偽代碼,僅作為代碼理解用
使用call,也就可以把上面的代碼等價于下面的代碼:
hugo2 = { food : "bone", say: function(){ console.log("My Name is "+ this.name +",I love "+this.food); } } hugo2.say();
可以看出函數調用的三種方式:
obj.myFunc(); myFunc.call(obj,arg); myFunc.apply(obj,[arg1,arg2..]);
用通俗的話總結一下:就是用別人的東西,所以要call一下
另外,apply和call還有一個作用是改變this的指向,這個網上已經大把解釋了,自行google一下吧。說太多反而不好理解。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78448.html
摘要:用的比較多的,通過選擇的節點是一種類似的。它不能應用下的等方法。和都是為了改變某個函數運行時的即上下文而存在的,換句話說,就是為了改變函數體內部的指向。這些的話也就能明白它倆的用處以及它們定義。 要明白call以及apply 首先得知道他們的用法如何有什么用 function cat() {} cat.prototype = { foo...
摘要:理解文章中已經比較全面的分析了在中的指向問題,用一句話來總結就是的指向一定是在執行時決定的,指向被調用函數的對象。與和直接執行原函數不同的是,返回的是一個新函數。這個新函數包裹了原函數,并且綁定了的指向為傳入的。 理解 JavaScript this 文章中已經比較全面的分析了 this 在 JavaScript 中的指向問題,用一句話來總結就是:this 的指向一定是在執行時決定的,...
摘要:輸出的作用與和一樣,都是可以改變函數運行時上下文,區別是和在調用函數之后會立即執行,而方法調用并改變函數運行時上下文后,返回一個新的函數,供我們需要時再調用。 前言 js中的call(), apply()和bind()是Function.prototype下的方法,都是用于改變函數運行時上下文,最終的返回值是你調用的方法的返回值,若該方法沒有返回值,則返回undefined。這幾個方法...
摘要:第四點也要著重講下,記住構造函數被操作,要讓正常作用最好不能在構造函數里 4) this、new、call和apply的相關問題 講解this指針的原理是個很復雜的問題,如果我們從javascript里this的實現機制來說明this,很多朋友可能會越來越糊涂,因此本篇打算換一個思路從應用的角度來講解this指針,從這個角度理解this指針更加有現實意義。 下面我們看看在ja...
摘要:原文鏈接參考深入理解原型和閉包完結王福朋博客園中的作用域詳解博客園 前言 王福朋老師的 JavaScript原型和閉包系列 文章看了不下三遍了,最為一個初學者,每次看的時候都會有一種 大徹大悟 的感覺,而看完之后卻總是一臉懵逼。原型與閉包 可以說是 JavaScirpt 中理解起來最難的部分了,當然,我也只是了解到了一些皮毛,對于 JavaScript OOP 更是缺乏經驗。這里我想總...
閱讀 1446·2021-09-10 11:27
閱讀 2401·2019-08-30 15:53
閱讀 1317·2019-08-30 13:10
閱讀 2969·2019-08-30 11:09
閱讀 1075·2019-08-29 17:23
閱讀 664·2019-08-29 17:05
閱讀 2943·2019-08-29 15:10
閱讀 2339·2019-08-29 13:22