摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。
個人博客已上線,歡迎前去訪問評論!
無媛無故 - wangchloe的個人博客
以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。
toString() && valueOf()
JSON stringify & parse
+new Date()
Array.prototype.slice.call(arguments, 0) 剖析
JS Bridge建立Native與H5間通信
Hybrid通信原理
JS Bridge
有些平時碰到的很零碎的東西我就隨便插入到這個章節(jié)里了。
1. toString() && valueOf()toString() 把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。
valueOf() 返回Boolean對象的原始值
源自知乎
這兩個方法一般是交由JS去隱式調(diào)用,以滿足不同的運(yùn)算情況。
在數(shù)值運(yùn)算里,會優(yōu)先調(diào)用valueOf(),如a+b;
在字符串運(yùn)算里,會優(yōu)先調(diào)用toString(),如alert(c)。
2. JSON stringify & parsejson2.js - 引入解決IE7及以下版本JSON未定義問題。
JSON.stringify(object); 對象 -> 字符串 將對象字符串序列化成標(biāo)準(zhǔn)JSON字符串
eg: {a:1,b:2} -> "{"a":1,"b":2}"
JSON.parse(str); 字符串 -> json對象 將字符串序列化成對象
{"name":"wangchloe","age":"22"} ->
{ age: "22", name: "wangchloe", _proto: Object }
baidu.com3. +new Date() 4. Array.prototype.slice.call(arguments, 0) 剖析
將具有l(wèi)ength屬性的對象轉(zhuǎn)成數(shù)組
5. JS Bridge建立Native與H5間通信 Hybrid通信原理背景:原生APP開發(fā)中有一個webview的組件(Android中是webview,iOS7以下有UIWebview,7以上有WKWebview),這個組件可以加載Html文件。
IOS
Object-C可直接調(diào)用js,只需調(diào)用stringByEvaluatingJavaScriptFromString即可,可直接獲取js返回值。
js不可直接調(diào)用Object-C,利用 shouldStartLoadWithRequest,需攔截每個url,對指定的schema進(jìn)行攔截做相應(yīng)的本地方法。
Android
Java可直接調(diào)用js,但不可直接獲取js返回值。
Java注冊addJavascriptInterface 后,js可直接調(diào)用Native的接口,并獲取Native的返回值。讓Java跟Javascript更加親密
通過 shouldOverrideUrlLoading,也還是攔截Web的所有URL請求來達(dá)到通信的目的。
基礎(chǔ)通信存在以下問題
Android4.2以下,addJavascriptInterface方式有安全漏洞
iOS7以下,js無法調(diào)用Native
JS Bridgeurl scheme交互方式是一套現(xiàn)有的成熟方案,可以完美兼容各種版本,不存在上述問題。
通過JSBridge(JS和Native通信機(jī)制),H5頁面可以調(diào)用Native的api,Native也可調(diào)用H5頁面的方法或者通知H5頁面回調(diào)。
原理:
(1)初始化創(chuàng)建的一個style.display=none 的iframe,并將iframe.src設(shè)置為自有協(xié)議,每次js需要與Native通信時,js端主動調(diào)用iframe.src即可,Native收到請求通知后,反向調(diào)用fetchQueue(可見源碼)獲取消息內(nèi)容;若Native需要與js通信,直接調(diào)用js,并獲取返回值
(2)
IOS
js->Native:js將要發(fā)送的消息存放在js端->調(diào)用iframe.src,觸發(fā)通知Native->Native攔截請求,調(diào)用js bridge里面的fetchQueue并獲取返回的消息內(nèi)容,處理消息->將需要返回的數(shù)據(jù)通過直接調(diào)用js的方式,讓js處理
Android
js->Native: 通過 shouldOverrideUrlLoading 攜帶Js的返回值
(3)Native->js: Native可直接調(diào)用Js并獲取返回的內(nèi)容
連續(xù)五篇講述Hybrid以及JSBridge解決方案
更多內(nèi)容可以訂閱本人微信公眾號(無媛無故),一起開啟前端小白進(jìn)階的世界!
公眾號不發(fā)文的時候推送一些我覺得好用的前端網(wǎng)站或者看到的一些問題的解決方案,也更便于大家交流,就醬。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/112021.html
摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。 toString() && valueOf() JSON ...
摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導(dǎo)更多人。 toString() && valueOf() JSON ...
摘要:沒想到老師下課點(diǎn)名了,老師李。一哥們答到老師咦,李,你站起來一下這哥們低著腦袋站起來了,老師表格上面寫的李是個女的啊這是不知道從哪個角落傳來一聲討厭啊,人家就是個女的了啦。 SpliderApi https://github.com/ecitlm/Spl... 基于nodejs 的爬蟲 API接口項(xiàng)目,包括前端開發(fā)日報、知乎日報、前端top框架排行、妹紙福利、搞笑視頻/ 熱點(diǎn)新聞資訊 ...
摘要:更安全地藏私房錢實(shí)際上,每天記錄下當(dāng)前的數(shù)據(jù)是不靈活的,而函數(shù)柯里化則有效地解決了這個問題。而且不定時舉辦活動贈送書籍哦 什么是函數(shù)柯里化 在計(jì)算機(jī)科學(xué)中,柯里化(Currying)是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)且返回結(jié)果的新函數(shù)的技術(shù)。這個技術(shù)由 Christopher Strachey 以邏輯學(xué)家 Haskell ...
閱讀 3684·2021-11-25 09:43
閱讀 2644·2021-11-25 09:43
閱讀 3844·2021-11-24 09:38
閱讀 696·2021-11-18 10:02
閱讀 2237·2021-09-22 15:53
閱讀 2997·2019-08-30 15:44
閱讀 2773·2019-08-30 14:01
閱讀 2753·2019-08-29 15:15