模擬 JS 原生 call 函式的實現
在前端開發的過程中,js是一個必不可少的技能。而說起js,就不得不提js中一個特別重要的知識點---this,因為js中的 this 的指向和傳統的面向物件的語言中 this 的指向有很大的不同。
而為了讓我們開發者能夠讓 this 按照我們的意願,指向我們所希望她指向的地方,js給我們暴露出了幾種可以硬性的繫結this到指定物件上的方法。它們分別是 call ,apply ,bind。
筆者之前也只是知道怎麼用這些方法,並沒有去探索它們內部的實現原理。而作為一個有追求的程式猿,我們不僅要知其然,還要知其所以然,所以今天我就來模擬一下 call 的實現。下面上圖:
不出所料,執行結果為 ‘’
相關推薦
模擬 JS 原生 call 函式的實現
在前端開發的過程中,js是一個必不可少的技能。而說起js,就不得不提js中一個特別重要的知識點---this,因為js中的 this 的指向和傳統的面向物件的語言中 this 的指向有很大的不同。 而為了讓我們開發者能夠讓 this 按照我們的意願,指向
JS原生代碼實現導航高亮
meta 樣式 添加 代碼 所有 wid 因此 margin position 一 實現原理 根據當前頁面滾動條的高度判斷當前頁面應當與導航欄中哪個導航相關聯,並對相應的導航設置高亮樣式。 二 代碼解析 先簡單寫一個頁面頂端的導航欄:<nav> <ul&
如何封裝JS原生ajax函式
首先我們要明白ajax的原理和使用步驟 ajax是我們與後臺連線使用的一個文件,主要分為四步,有三步是我們前端工作人員去完成的, 第一步是建立ajax的物件,第二部是傳送請求到後臺,第三步是後臺所編寫的資料,第四步是我們收到後臺返回資料的處理,第四步返回的格式經常的有xml
js原生rotate函式
Document div{ width: 300px; height: 20px; background: red; marg
面試官問:能否模擬實現JS的call和apply方法
之前寫過兩篇《面試官問:能否模擬實現JS的new操作符》和《面試官問:能否模擬實現JS的bind方法》 其中模擬bind方法時是使用的call和apply修改this指向。但面試官可能問:能否不用call和apply來實現呢。意思也就是需要模擬實現call和apply的了。 附上之前寫文章寫過的一段
apply,call,bind用js原生實現
// apply第一個引數是函式的執行環境this,第二個引數是一個數組,這個陣列會自動散開成為函式的引數 Function.prototype.apply = function (x, y) { x = x || window y = y || [] x._apply = th
Javascript模擬實現call函式
js自帶call的用法:fn.call(obj,param1,param2,...); 將fn中的this指向obj,並已逗號隔開形式傳入引數 var myobj={name:'peachestao'}; function fn(param){ c
js原生實現選項卡功能
doc pre pan element gre rip class isp height 結構:<div id="box"> <input type="button" value="書籍" class="on"> <in
Node.js原生及Express方法實現註冊登錄原理
美化 set head ack function charset stat input col 由於本文只是實現其原理,所以沒有使用數據庫,只是在js裏面模擬數據庫,當然實際中還是需要用數據庫的。 1.node.js原生方法 ①html頁面,非常簡單,沒有一絲美化~我們叫它
原生js面向對象實現簡單輪播
get 輪播效果 his 基本實現 詳細 bottom style 距離 簡單的 平時中我習慣用jquery寫輪播效果,實現過程不是很難,也很方便,為了加深對js面向對象的理解,我打算用面向對象實現一個簡單的輪播,這裏采用了字面量的方式實現。為了實現這個過程,我們要自己動手
jsonrpc.js -- 原生js實現 JSON-RPC 協議
href 一次 nts 批量 項目 消息接收 傳遞方式 結果 send 很早以前就涉及到多端遠程調用 api的設計,那時候自己設計了個消息傳遞回調過程。最近了解了JSON-RPC協議,更正規,就可以自己實現下。邏輯也不復雜,沒有限制底層消息傳遞的方式,可以應用到更多的場
原生js輪播圖實現
索引 獲取 mouseout abs length ati point css ack 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta chars
js原生實現輪播
隱藏 asc head col count CA 依次 temp AI 前兩天同事面試新人,讓現場寫”輪播的實現”。我一想這玩意貌似我也沒寫過啊,就在旁邊暗搓搓地拖了一張紙也在那寫,同事都納悶了! 這玩意實現方法有很多種,就看喜歡那種,喜歡怎麽
js原生實現網頁廣告條飛舞的效果
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> <style type="text/
JS用函式實現:輸入年,月,日,獲取這個日期是這一年的第多少天
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body>
使用js模擬錨點功能的實現
使用js模擬錨點功能的實現 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>錨點 + js</title>
JS原生輪播圖實現
作為一個PHP全棧攻城獅,不僅要會後端PHP和資料庫,還要會前端JS。今天原始碼時代 PHP培訓 學科老師要和大家分享一下JS原生編寫輪播圖的外掛。 說起輪播圖,很多人會選擇使用各種外掛,比如基於JQuery或其它框架的。不瞞大家,我也用過,甚至還用過Flash的輪播圖。總體來說,用起來是比較簡
JS原生實現本地圖片上傳預覽
執行方式如下: $("input").change(function() { var config = { imgWrapWidth: 300, //px imgWrapHeight: 200, //px imgMaxWidth: "100%", im
使用js函式實現按鈕控制倒計時
1.設定控制倒計時的函式 function count(){ var count = 149;//倒計時開始的秒數 var countdown = setInterval(CountDown, 1000); //倒計時增量(1000為毫秒) function CountD
模擬實現strcpy和strcat的函式實現
#include<stdio.h> #include<Windows.h> #include<assert.h> char* my_strcpy(char* dest, const char* src) { char *ret1 = dest;//記錄目標字