成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

fn有toString方法,string沒有toFunction方法,自定義一個toFunction

qiangdada / 2510人閱讀

摘要:更新感謝行列給了一個更加精簡的方法實現(xiàn)重點在和方法很笨拙,不知道有沒有大神給改改的,或者有什么可替換的系統(tǒng)方法。總結(jié)一行神奇的代碼會還原到

更新:
感謝 @行列[xxooyy] 給了一個更加精簡的方法實現(xiàn):

String.prototype.toFunction=function(){ return eval("("+this+")")};
//重點在"("和")"
String.prototype.toFunction = function () {
    var fnString = this.toString();
    var preRs = "^functions*[a-zA-Z]*?([sS]*?)s*{";
    var endRs = "}$";
    var argRs = "^functions*[a-zA-Z]*?(|)s*{|s*";
    var preReg = new RegExp(preRs, "i");
    var endReg = new RegExp(endRs);
    var argReg = new RegExp(argRs, "g");
    var preEndReg = new RegExp(preRs + "|" + endRs, "gi");
    if (preReg.test(fnString)) {
        var preEnd = fnString.match(preEndReg);
        var fnArguments = preEnd[0].replace(argReg, "").split(",");
        var fnBody = fnString.replace(preEndReg, "");
        var fn = new Function(fnArguments, fnBody);
        return fn;
    } else {
        return fnString;
    }
}

"function (a) { console.log(a); }".toFunction();
//function anonymous(a) { console.log(a); }

方法很笨拙,不知道有沒有大神給改改的,或者有什么可替換的系統(tǒng)方法。
https://jsfiddle.net/jsoncode...

總結(jié)一行神奇的代碼:

var fn = function (){};
new Function("return "+Function.prototype.toString.call(fn));
//會還原到fn

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/80844.html

相關(guān)文章

  • 《javascript高級程序設(shè)計》筆記:valueOf() / toString() 對比

    摘要:中這樣描述和調(diào)用方法用來把對象轉(zhuǎn)換成原始類型的值數(shù)值字符串和布爾值。你很少需要自己調(diào)用此函數(shù)當(dāng)遇到一種需要轉(zhuǎn)換成一個原始值情況時候,會自動調(diào)用此函數(shù)。默認(rèn)情況下會被每個對象繼承。 MDN 中這樣描述 valueOf() 和 toString(): JavaScript 調(diào)用 valueOf() 方法用來把對象轉(zhuǎn)換成原始類型的值(數(shù)值、字符串和布爾值)。 你很少需要自己調(diào)用此函數(shù);當(dāng)...

    yzzz 評論0 收藏0
  • 盤點Vue源碼中用到的工具函數(shù)

    摘要:用做緩存的高階函數(shù)用高階函數(shù)的好處是無需暴露不同要求的緩存對象在外面,形成一個閉包。函數(shù)內(nèi)部調(diào)用函數(shù)得到操作后的值,并緩存在對象中,如果再對同一個值進行操作時,則直接從緩存中取,無需再調(diào)用函數(shù)計算。 以下摘取的函數(shù),在 shared 目錄下公用的工具方法。文件在 util.js 中,githu地址。 提取了一些常用通用的函數(shù)進行剖析,主要包含以下內(nèi)容: 創(chuàng)建一個被凍結(jié)的空對象 判斷是...

    elarity 評論0 收藏0
  • vue的源碼分析(全局工具函數(shù))

    摘要:創(chuàng)建一個自調(diào)用匿名函數(shù),設(shè)計參數(shù),并傳入對象。表示獨一無二的值聲明時不能使用,而是聲明時可以加參數(shù),用于描述作為時不能被遍歷這個函數(shù)主要是檢測當(dāng)前對象是否有某種屬性。給變量賦值一個空的對象返回一個的函數(shù),將函數(shù)的參數(shù)的帶入并賦值,返回。 VUE 2.6.8 (function (global, factory) { typeof exports === object && type...

    Baaaan 評論0 收藏0
  • javascript的面向?qū)ο螅玩溂袄^承

    摘要:也就是說,不必在構(gòu)造函數(shù)中添加定義對象信息,而是可以直接將這些信息添加到原型中。子類的屬性,表示構(gòu)造函數(shù)的繼承,總是指向父類。以前,這些原生構(gòu)造函數(shù)是無法繼承的。 面向?qū)ο?js是一門基于對象的語言。js中的一切皆對象; console.log(Object.prototype.toString.call(123)) //[object Number] console....

    Xufc 評論0 收藏0
  • 標(biāo)準(zhǔn)庫(一)object對象

    摘要:控制對象狀態(tài)的方法防止對象擴展。判斷一個對象是否被凍結(jié)。返回當(dāng)前對象對應(yīng)的值。方法的作用是返回一個對象的字符串形式上面代碼表示,對于一個對象調(diào)用方法,會返回字符串用途通過自定義方法,可以讓對象在自動類型轉(zhuǎn)換時,得到想要的字符串形式。 概述Object()Object 構(gòu)造函數(shù)Object 的靜態(tài)方法「本身的方法Object.keys(),Object.getOwnPropertyNam...

    Muninn 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<