成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

每天10個前端知識點:雜技

dongfangyiyu / 442人閱讀

摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。

個人博客已上線,歡迎前去訪問評論!
無媛無故 - wangchloe的個人博客

以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導更多人。

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)用,以滿足不同的運算情況。

在數(shù)值運算里,會優(yōu)先調(diào)用valueOf(),如a+b;

在字符串運算里,會優(yōu)先調(diào)用toString(),如alert(c)。

2. JSON stringify & parse

json2.js - 引入解決IE7及以下版本JSON未定義問題。

JSON.stringify(object); 對象 -> 字符串 將對象字符串序列化成標準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.com
3. +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進行攔截做相應的本地方法。

Android

Java可直接調(diào)用js,但不可直接獲取js返回值。

Java注冊addJavascriptInterface 后,js可直接調(diào)用Native的接口,并獲取Native的返回值。讓Java跟Javascript更加親密

通過 shouldOverrideUrlLoading,也還是攔截Web的所有URL請求來達到通信的目的。

基礎(chǔ)通信存在以下問題

Android4.2以下,addJavascriptInterface方式有安全漏洞

iOS7以下,js無法調(diào)用Native

JS Bridge

url scheme交互方式是一套現(xiàn)有的成熟方案,可以完美兼容各種版本,不存在上述問題。

通過JSBridge(JS和Native通信機制),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)容可以訂閱本人微信公眾號(無媛無故),一起開啟前端小白進階的世界!

公眾號不發(fā)文的時候推送一些我覺得好用的前端網(wǎng)站或者看到的一些問題的解決方案,也更便于大家交流,就醬。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/112021.html

相關(guān)文章

  • 每天10前端識點雜技

    摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導更多人。 toString() && valueOf() JSON ...

    marser 評論0 收藏0
  • 每天10前端識點雜技

    摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉(zhuǎn)換為字符串,并返回結(jié)果。注冊后,可直接調(diào)用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內(nèi)容若有問題煩請即時告知我予以修改,以免誤導更多人。 toString() && valueOf() JSON ...

    qieangel2013 評論0 收藏0
  • 基于 Node.js 爬蟲的數(shù)據(jù) API,搭建一套屬于自己的 API 數(shù)據(jù)

    摘要:沒想到老師下課點名了,老師李。一哥們答到老師咦,李,你站起來一下這哥們低著腦袋站起來了,老師表格上面寫的李是個女的啊這是不知道從哪個角落傳來一聲討厭啊,人家就是個女的了啦。 SpliderApi https://github.com/ecitlm/Spl... 基于nodejs 的爬蟲 API接口項目,包括前端開發(fā)日報、知乎日報、前端top框架排行、妹紙福利、搞笑視頻/ 熱點新聞資訊 ...

    chenjiang3 評論0 收藏0
  • 前端早讀君004」函數(shù)柯里化(Currying)小實踐

    摘要:更安全地藏私房錢實際上,每天記錄下當前的數(shù)據(jù)是不靈活的,而函數(shù)柯里化則有效地解決了這個問題。而且不定時舉辦活動贈送書籍哦 什么是函數(shù)柯里化 在計算機科學中,柯里化(Currying)是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)且返回結(jié)果的新函數(shù)的技術(shù)。這個技術(shù)由 Christopher Strachey 以邏輯學家 Haskell ...

    Barry_Ng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<