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

資訊專欄INFORMATION COLUMN

拜讀jQuery(1)--globalEval

anyway / 2810人閱讀

摘要:去年暑假的時(shí)候開(kāi)通了博客園,然后開(kāi)始找工作,至今為止只寫(xiě)了一篇文章。慚愧啊今天興致來(lái)了,投身博客園,尼瑪,密碼忘記了。即有所謂的函數(shù)名函數(shù)名。獲取對(duì)的使用去除字符串兩端的空格說(shuō)明是嚴(yán)格模式,不能直接使用函數(shù)非嚴(yán)格模式

今天第一次在segmentfault里寫(xiě)文章。去年暑假的時(shí)候開(kāi)通了博客園,然后開(kāi)始找工作,至今為止只寫(xiě)了一篇文章。慚愧??!今天興致來(lái)了,投身博客園,尼瑪,密碼忘記了??戳四敲礋o(wú)聊的找回密碼,果斷轉(zhuǎn)投于此,但愿我以后能夠堅(jiān)持寫(xiě)點(diǎn)東西。畢竟,好好記性不如爛筆頭。
公司不讓去實(shí)習(xí),在學(xué)校待的無(wú)聊,前兩天再寫(xiě)東西的時(shí)候,突然意識(shí)到,已經(jīng)大半年沒(méi)有寫(xiě)過(guò)jQuery了。但看到那么多熟悉API,不想再去做重復(fù)的工作,果斷找到源碼,投入分析。
看源碼的進(jìn)程緩慢,但收獲確實(shí)挺大,尤其有利于扎實(shí)js底層知識(shí)。今天看到了源碼里面globalEval方法的實(shí)現(xiàn)。雖然用的不多,但是實(shí)現(xiàn)方法著實(shí)讓人眼前一驚(大神不算)。所以就從這里開(kāi)始我的文章生涯吧?。?/p> eval和window.eval

對(duì)于eval基本的用法,對(duì)于任何一位前端來(lái)說(shuō),都不會(huì)陌生。jQuery源碼里面也有其基本使用,但是用法。可視我第一次見(jiàn)啊啊啊啊。
我們知道,當(dāng)我們?cè)谌致暶饕粋€(gè)函數(shù)的時(shí)候,就相當(dāng)于在window對(duì)象上面添加了一個(gè)方法。即有所謂的:函數(shù)名===window.函數(shù)名。以前在使用eval()函數(shù)的時(shí)候,也想當(dāng)然的認(rèn)為eval===window.eval。其實(shí),兩者的用法差距挺大的。

function create()
{
    eval("var a = 2");   //和在函數(shù)里面直接var a = 2;的效果是一樣的
    window.eval("var b = 3");  //這種其實(shí)是在全局作用域里面聲明了變量 b
}

//調(diào)用函數(shù)
create();
consoole.log(a);  //報(bào)錯(cuò):a is not defined
console.log(b);   // 3

從上面的函數(shù)里面,我們就可以看出eval就是把其參數(shù)在當(dāng)前的作用域里面運(yùn)行。而window.eval無(wú)論其處于什么作用域里,都會(huì)把其參數(shù)在全局作用域里面運(yùn)行。

除了直接使用window.eval外,我們也可以使用一個(gè)變量對(duì)其進(jìn)行引用

function create(){
{
    var ev = eval;   //js就是這么神奇,這里的eval指的是window.eval,而非對(duì)eval的直接引用
    ev("var c = 4");
}
create();
console.log(c); //4

js果然是一門(mén)神奇的語(yǔ)言,那么小的一個(gè)玩意竟然會(huì)有那么多想不到的用法。
其實(shí)啊,eval在多帶帶使用的時(shí)候,js語(yǔ)言其實(shí)是把它作為一個(gè)結(jié)構(gòu)體來(lái)看待,而window.eval在使用的時(shí)候,卻真真是一個(gè)函數(shù)。

下面附上jQuery里面globalEval的源碼

//自己試著寫(xiě)的,順便使用了經(jīng)常使用的去除兩端空格的方法。
String.prototype.trim = function(){
    return this.replace(/^(s+)|(s)+$/g,"");
};
jQuery.globalEval = function(code){
    var newScript,
        newEval = eval;   //獲取對(duì)eval的使用
     
     code = code.trim();  //去除字符串兩端的空格
     
     if(code){
         if(code.indexOf("use strict")){
             //說(shuō)明是嚴(yán)格模式,不能直接使用window.eval函數(shù)
             newScript = document.createElement("script");
             newScript.createTextNode(code);
             document.head.appendChild(newScript).parentNode.removeChild(newScript);
         }else{
             //非嚴(yán)格模式
             newEval(code);
         }
     }
}

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

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

相關(guān)文章

  • jQuery源碼解讀:部份jQuery工具方法實(shí)現(xiàn)

    摘要:作為前端最流行的類庫(kù),沒(méi)有之一,源碼必須得讀一讀。本博將不定期更新源碼解讀內(nèi)容,如果解讀不正確的地方,還請(qǐng)同學(xué)們?cè)谠u(píng)論中指正。這里使用的是改變的指向?yàn)閷?shí)例。其實(shí)就是中常見(jiàn)的四判斷是否是數(shù)字函數(shù)用于檢查其參數(shù)是否是無(wú)窮大。 jQuery作為前端最流行的類庫(kù),沒(méi)有之一,源碼必須得讀一讀。本博將不定期更新源碼解讀內(nèi)容,如果解讀不正確的地方,還請(qǐng)同學(xué)們?cè)谠u(píng)論中指正。 本系列文章基于jquer...

    Rindia 評(píng)論0 收藏0
  • 原生js替換jQuery各種方法-中文版

    摘要:本項(xiàng)目總結(jié)了大部分替代的方法,暫時(shí)只支持以上瀏覽器。返回指定元素及其后代的文本內(nèi)容。從服務(wù)器讀取數(shù)據(jù)并替換匹配元素的內(nèi)容。用它自己的方式處理,原生遵循標(biāo)準(zhǔn)實(shí)現(xiàn)了最小來(lái)處理。當(dāng)全部被解決時(shí)返回,當(dāng)任一被拒絕時(shí)拒絕。是創(chuàng)建的一種方式。 原文https://github.com/nefe/You-D... You Dont Need jQuery showImg(https://segmen...

    lylwyy2016 評(píng)論0 收藏0
  • jQuery is out of date

    摘要:注同時(shí)移除元素上的事件及數(shù)據(jù)。其他對(duì)象通過(guò)其屬性名進(jìn)行迭代。原始數(shù)組不受影響。檢查對(duì)象是否為空不包含任何屬性。返回一個(gè)數(shù)字,表示當(dāng)前時(shí)間。兩者性能差不多接受一個(gè)標(biāo)準(zhǔn)格式的字符串,并返回解析后的對(duì)象。 在我看來(lái),jQuery確實(shí)已經(jīng)過(guò)時(shí)了。本項(xiàng)目總結(jié)了絕大部分 jQuery API 替代的方法,類似項(xiàng)目You-Dont-Need-jQuery,并會(huì)再此基礎(chǔ)上進(jìn)行很多的補(bǔ)充。寫(xiě)這個(gè)項(xiàng)目主要...

    duan199226 評(píng)論0 收藏0
  • jQuery源碼分析-整體架構(gòu)(轉(zhuǎn))

    摘要:文章出處拜讀一個(gè)開(kāi)源框架,最想學(xué)到的就是設(shè)計(jì)的思想和實(shí)現(xiàn)的技巧。利用下的簡(jiǎn)單工廠模式,來(lái)將所有對(duì)于同一個(gè)對(duì)象的操作指定同一個(gè)實(shí)例。所以的中提供了以上中擴(kuò)展函數(shù)。 文章出處 http://www.cnblogs.com/aaronjs/p/3278578.html 拜讀一個(gè)開(kāi)源框架,最想學(xué)到的就是設(shè)計(jì)的思想和實(shí)現(xiàn)的技巧。 廢話不多說(shuō),jquery這么多年了分析都寫(xiě)爛了,老早以前就拜讀過(guò),...

    voidking 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<