详解某视频剪辑软件源码中一些跑龙套函数
射流研究…中很多开源库都有一个跑龙套文件夹,来存放一些常用的函数。这些套路属于那种常用但是不在萨尔瓦多规范中,同时又不足以单独为它发布一个新公共管理模块。所以很多库都会单独写一个工具函数模块。
最进尝试阅读某视频剪辑软件源码,看到很多有意思的函数,在这里分享一下。
对象。原型。ToString。呼叫(参数)和字符串(参数)的区别?
上述两个表达式都是尝试将一个参数转化为字符串,但是还是有区别的。
字符串(参数)会尝试调用arg.toString()或者arg.valueOf(),所以如果银或者银的原型重写了这两个方法,对象。原型。tostring。呼叫(参数)和字符串(参数)的结果就不同
const _ toString=对象。原型。toString var obj={ } obj。toString()//[对象对象]_ toString。打电话对象对象]obj。toString=()=' 111 ' obj。toString()//111 _ toString。打电话对象对象]/你好/.toString()///hello/_ toString。call(/hello/)//[object RegExp](9500 . 163.com)
上图是S2018的截图,我们可以知道Object.prototype.toString的规则,而且有一个规律,Object.prototype.toString的返回值总是[对象标签],如果我们只想要中间的标签,不要两边烦人的补充字符,我们可以
函数toRawType(值){ return _toString.call(值)。slice(8,-1)} torwtype(Null)/“Null”torwtype(//sdfsd/)/“RegExp”虽然看起来挺简单的,但是很难自发的领悟到这种写法,有木有。
缓存函数计算结果
假如有这样的一个函数
函数计算值(str) { //假设中间的计算非常耗时console.log('已过2000秒)返回"一个结果"}我们希望将一些运算结果缓存起来,第二次调用的时候直接读取缓存中的内容,我们可以怎么做呢?
函数缓存(fn){ const cache=object。创建(空)返回函数cachedFn (str) { if(!cache[str]){ cache[str]=fn(str)} return cache[str]} } var cached computerd=cached(计算)缓存的计算机d(' ss ')//打印2000年代具有passedcachedccomputerd(' ss ')//不再打印将hello-world风格的转化为编译风格
const camelizeRE=/-(\ w)/gconst camelize=cached((str)={ return str。替换(camelizeRE,(_,c)=c?c . touppercase()(: ' ')})骆驼化(“hello-world”)//“hello world”判断射流研究…运行环境
const inBrowser=窗口类型!==' undefined ' const in weex=wxeenvironment的类型!=='未定义!wxeenvironment。platformconst weexPlatform=in weex wxeenvironment。站台。tolowercase()const UA=inBrowser窗口。领航员。用户代理。tolowercase()const ISie=UA/msie | trident/.测试常量9=测试常量。indexof(' msie 9.0 ')0 const isEdge=UA UA UA。indexof(' edge/')0 const为andoid=(UA。indexof(' Android ')0)| |(weexPlatform==' Android ')const ISios=(UA/iphone | ipad | ipod | IOs/.test(UA))| |(weexPlatform==' IOs ')const isChrome=UA/chrome \/\ d/.测试(UA)!isedgconst ishantomjs=UA/phantom js/.测试(UA)常量IsfF=UA UA UA。匹配(/Firefox \/(\ d)/)判断一个函数是宿主环境提供的还是用户自定义的
控制台。日志。tostring()//'函数日志(){[本机代码]} '函数fn(){ } fn。tostring()/' function fn(){ } '//所以函数是主动的(Ctor){ 0返回类型的Ctor===' function '/本机代码/。test(Ctor.toString())}以上所述是小编给大家介绍的某视频剪辑软件源码中一些跑龙套函数详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
版权声明:详解某视频剪辑软件源码中一些跑龙套函数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。