CocosCreator 源碼./polyfill/misc詳解

/* 當(dāng)系統(tǒng)沒(méi)有Math.sign的時(shí)候贿堰;使用這個(gè)

判斷一個(gè)數(shù)是正數(shù)還是負(fù)數(shù),返回1或者-1 或者0 或者-0 或者 NaN */

if (!Math.sign) {

? ? Math.sign = function (x) {

? ? ? ? /*??

? ? ? ? ? ? 加號(hào)運(yùn)算符(+)將把一個(gè)字符串轉(zhuǎn)換成一個(gè)數(shù)字冀膝。該運(yùn)算符將被放在操作數(shù)之前。

? ? ? ? ? ? const quantity = "12";

? ? ? ? ? ? console.log(+quantity);

? ? ? ? ? ? 我們還可以使用加號(hào)(+)將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)。

? ? ? ? ? ? const quantity = "12.99";

? ? ? ? ? ? console.log(+quantity);

? ? ? ? ? ? 如果字符串值不能被轉(zhuǎn)換為數(shù)字风喇,那么結(jié)果將是 NaN柱衔。

? ? ? ? ? ? const quantity = "awesome";

? ? ? ? ? ? console.log(+quantity);

? ? ? ? ? ? */

? ? ? ? /* 區(qū)分 +0 和 -0 在解決一些特定的數(shù)學(xué)問(wèn)題時(shí)是必要的樊破,

? ? ? ? 但是大部分情況下我們并不用關(guān)心。嚴(yán)格相等認(rèn)為這兩個(gè)值是全等的唆铐。 */

? ? ? ? x = +x; // convert to a number

? ? ? ? /* isNaN() 函數(shù)用于檢查其參數(shù)是否是非數(shù)字值哲戚。

? ? ? ? 假如是0 或者 非數(shù)字 的時(shí)候,返回對(duì)應(yīng)的 0 或者對(duì)應(yīng)的非數(shù)字值艾岂。 */

? ? ? ? if (x === 0 || isNaN(x)) {

? ? ? ? ? ? return x;

? ? ? ? }

? ? ? ? /* 大于0的時(shí)候顺少,返回1 */

? ? ? ? return x > 0 ? 1 : -1;

? ? };

}

/* 此函數(shù)返回?cái)?shù)字以 2 為底的對(duì)數(shù)值 */

if (!Math.log2) {

? ? Math.log2 = function (x) {

? ? ? ? /* Math.log 方法可返回一個(gè)數(shù)的自然對(duì)數(shù)(基于E)。

? ? ? ? Math.LOG2E是JavaScript中的一個(gè)屬性,僅用于查找e的以2為底的對(duì)數(shù)的值脆炎,

? ? ? ? 其中e是大約等于2.718的無(wú)理數(shù)和超越數(shù)梅猿。

? ? ? ? ?*/

? ? ? ? return Math.log(x) * Math.LOG2E;

? ? };

}

/*?

isInteger() 函數(shù)用于檢測(cè)指定參數(shù)是否為整數(shù),如果是整數(shù)返回 true秒裕,否則返回 false袱蚓。

?*/

if (!Number.isInteger) {

? ? Number.isInteger = function (value) {

? ? ? ? /* isFinite() 函數(shù)用于檢查其參數(shù)是否是無(wú)窮大,

? ? ? ? 也可以理解為是否為一個(gè)有限數(shù)值(finite number)几蜻。

?如果參數(shù)是 NaN喇潘,正無(wú)窮大或者負(fù)無(wú)窮大,會(huì)返回 false入蛆,其他返回 true响蓉。

?*/

? ? ? ? return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;

? ? };

}

/*?

CC_JSB 來(lái)判斷是否為 native 環(huán)境(模擬器)-官方引擎回復(fù)

?* Running in native platforms (mobile app, desktop app, or simulator).

?* CC_JSB-判斷,在本機(jī)平臺(tái)(移動(dòng)應(yīng)用程序哨毁、桌面應(yīng)用程序或模擬器)上運(yùn)行


?*/

/* CC_RUNTIME-在runtime環(huán)境下運(yùn)行

Running in runtime environments.

運(yùn)行環(huán)境(英語(yǔ):Runtime environment枫甲,又稱(chēng)“運(yùn)行期系統(tǒng)”,run-time system)

扼褪,指一種把半編譯的運(yùn)行碼在目標(biāo)機(jī)器上運(yùn)行的環(huán)境想幻。

運(yùn)行環(huán)境是一種介乎編譯器及直譯器的運(yùn)行方式。Java運(yùn)行環(huán)境话浇,

稱(chēng)之為“Java Runtime Environment”(JRE)脏毯。

?*/

/*?

不存在console.time的時(shí)候

console.time和console.timeEnd這兩個(gè)方法可以用來(lái)讓W(xué)EB開(kāi)發(fā)人員測(cè)量一個(gè)javascript腳本程序執(zhí)行消耗的時(shí)間。隨著WEB應(yīng)用越來(lái)越重要幔崖,JavaScript的執(zhí)行性能也日益受到重視食店,WEB開(kāi)發(fā)人員知道一些性能測(cè)試機(jī)器是必須的。今天要介紹的console.time和console.timeEnd就是其中之一赏寇。

console.time方法是開(kāi)始計(jì)算時(shí)間吉嫩,console.timeEnd是停止計(jì)時(shí),輸出腳本執(zhí)行的時(shí)間嗅定。

// 啟動(dòng)計(jì)時(shí)器

console.time('testForEach');

// (寫(xiě)一些測(cè)試用代碼)

// 停止計(jì)時(shí)自娩,輸出時(shí)間

console.timeEnd('testForEach');

// 4522.303ms

這兩個(gè)方法中都可以傳人一個(gè)參數(shù),作為計(jì)時(shí)器的名稱(chēng)渠退,它的作用是在代碼并行運(yùn)行時(shí)分清楚各個(gè)計(jì)時(shí)器忙迁。對(duì)console.timeEnd的調(diào)用會(huì)立即輸出執(zhí)行總共消耗的時(shí)間,單位是毫秒碎乃。

測(cè)試JavaScript性能的方法有很多姊扔,但console.time/timeEnd兩個(gè)方法是最基本、最直接的技巧梅誓。

?*/

if (CC_JSB || CC_RUNTIME || !console.time) {

? ? /* Performance API用于精確度量旱眯、控制、增強(qiáng)瀏覽器的性能表現(xiàn)。

? ? 這個(gè)API為測(cè)量網(wǎng)站性能删豺,提供以前沒(méi)有辦法做到的精度。

? ? */

? ? var Timer = window.performance || Date;

? ? /* 創(chuàng)建一個(gè)object */

? ? var _timerTable = Object.create(null);

? ? console.time = function (label) {

? ? ? ? /* 創(chuàng)建一個(gè)存儲(chǔ)當(dāng)前時(shí)間 */

? ? ? ? _timerTable[label] = Timer.now();

? ? };

? ? console.timeEnd = function (label) {

? ? ? ? /* 計(jì)算時(shí)間差 */

? ? ? ? /* 根據(jù)key愧怜,獲取記錄的start時(shí)間 */

? ? ? ? /* 根據(jù)key呀页,獲取當(dāng)前時(shí)間減去記錄的start時(shí)間,獲取時(shí)間差-毫秒 */

? ? ? ? var startTime = _timerTable[label];

? ? ? ? var duration = Timer.now() - startTime;

? ? ? ? console.log(`${label}: ${duration}ms`);

? ? };

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拥坛,一起剝皮案震驚了整個(gè)濱河市蓬蝶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猜惋,老刑警劉巖丸氛,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異著摔,居然都是意外死亡缓窜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)谍咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)禾锤,“玉大人,你說(shuō)我怎么就攤上這事摹察《髦溃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵供嚎,是天一觀的道長(zhǎng)黄娘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)克滴,這世上最難降的妖魔是什么逼争? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮偿曙,結(jié)果婚禮上氮凝,老公的妹妹穿的比我還像新娘。我一直安慰自己望忆,他們只是感情好罩阵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著启摄,像睡著了一般稿壁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歉备,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天傅是,我揣著相機(jī)與錄音,去河邊找鬼。 笑死喧笔,一個(gè)胖子當(dāng)著我的面吹牛帽驯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播书闸,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼尼变,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浆劲?” 一聲冷哼從身側(cè)響起嫌术,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牌借,沒(méi)想到半個(gè)月后度气,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膨报,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年磷籍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丙躏。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡择示,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晒旅,到底是詐尸還是另有隱情栅盲,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布废恋,位于F島的核電站谈秫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鱼鼓。R本人自食惡果不足惜拟烫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迄本。 院中可真熱鬧硕淑,春花似錦、人聲如沸嘉赎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)公条。三九已至拇囊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間靶橱,已是汗流浹背寥袭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工路捧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人传黄。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓杰扫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親尝江。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涉波,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容