国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

JS程序設(shè)計(jì)高級(jí)技巧

Codeing_ls / 1793人閱讀

摘要:關(guān)于定時(shí)器要記住的最重要的事情是指定的時(shí)間間隔表示何時(shí)將定時(shí)器的代碼添加到隊(duì)列,而不是何時(shí)實(shí)際執(zhí)行代碼。多個(gè)定時(shí)器之間的執(zhí)行間隔會(huì)比預(yù)期的小解決辦法處理中數(shù)組分塊,,函數(shù)節(jié)流,實(shí)際進(jìn)行處理的方法實(shí)際執(zhí)行的代碼初始處理調(diào)用的方法

一、高級(jí)函數(shù)

安全類(lèi)型檢測(cè)

Object.protitype.toString.call(value)

作用域安全的構(gòu)造函數(shù)

function Person(name, age, job) {
    if (this instanceof Person) {
        this.name = name;
        this.age = age;
        this.job = job;
    } else {
        return new Person(name, age, job);
    }
}
// 如果你使用構(gòu)造函數(shù)竊取模式的繼承且不使用原型鏈,這個(gè)繼承很可能被破壞
function Teacher (name, age, job, salary) {
    // this指向非Peroson 返回新的實(shí)例,構(gòu)造函數(shù)中的this屬性并未增長(zhǎng)
    Person.call(this, name, age, job); 
    this.salary = salary;
}
// 解決這個(gè)問(wèn)題的方法是,Teacher.prototype = new Person(),此時(shí)一個(gè)Teacher實(shí)例也是一個(gè)Person實(shí)例

惰性載入函數(shù)
在函數(shù)被調(diào)用的時(shí)候再處理函數(shù),在第一次調(diào)用的過(guò)程中,該函數(shù)會(huì)被覆蓋為另一個(gè)按合適方式執(zhí)行的函數(shù)

function createXHR () {
    if (typeof XMLHttpRequest != "undefined) {
        createXHR  = function () {
            return new XMLHttpRequest ();
        }
    } else if (typeof ActiveXObject != "undefined") {
        createXHR = function () {
            if (typeof arguments.callee.activeString != "string") {
                //...
            }
        }
    } else {
        createXHR  = function () {
            // ...
        }
    }
    return createXHR();
}

在聲明的時(shí)候就指定適當(dāng)?shù)暮瘮?shù),利用匿名函數(shù)自運(yùn)行,return一個(gè)合適的函數(shù)

函數(shù)綁定
一個(gè)簡(jiǎn)單的bind函數(shù)

function bind(fn, context){
    return function() {
        return fn.apply(context, arguments)
    }
}

函數(shù)柯里化
函數(shù)的柯里化的基本方法和函數(shù)綁定是一樣的,使用一個(gè)閉包返回一個(gè)函數(shù),區(qū)別是,當(dāng)函數(shù)被調(diào)用時(shí),還需要傳遞一些參數(shù)
柯里化函數(shù)動(dòng)態(tài)創(chuàng)建步驟:調(diào)用另一個(gè)函數(shù)并為它傳入要柯里化的函數(shù)和必要參數(shù)

function curry(fn){
    var args = Array.prototype.slice.call(arguments, 1);
    return function () {
        var innerArgs = Array.prototype.slice.call(arguments);
        var finalArgs = args.concat(innerArgs);
        return fn.apply(null, finalArgs)
    }
}

es5中的防篡改對(duì)象
不可擴(kuò)展對(duì)象

Objcect.preventExtensions(obj)   // 設(shè)置對(duì)象屬性是否可以擴(kuò)展
Objcect.isExtensible(obj)         // 返回值為bool值,true即該對(duì)象可以擴(kuò)展,false為不可擴(kuò)展

密封的對(duì)象
密封對(duì)象不可擴(kuò)展,而且已有成員的[ [ Configurable ] ]特性將被設(shè)置為false,這就意味著不能刪除屬性和方法

Object.seal(obj)     // 設(shè)置對(duì)象是否是密封
Object.isSealed    // 返回值為bool值,true即該對(duì)象已經(jīng)密封,false為沒(méi)有密封

凍結(jié)對(duì)象
凍結(jié)的對(duì)象既不可以擴(kuò)展,又是密封的

Object.freeze(obj)         // 設(shè)置對(duì)象是否凍結(jié)
Objcet.isForzen(obj)    // 返回值為bool值,true即該對(duì)象已經(jīng)凍結(jié),false為沒(méi)有凍結(jié)

高級(jí)定時(shí)器
除了主Javascript執(zhí)行進(jìn)程外,還有一個(gè)需要在進(jìn)程下次一空閑的時(shí)執(zhí)行的代碼隊(duì)列。隨著頁(yè)面在其生命周期中的推移,代碼會(huì)按照?qǐng)?zhí)行順序添加到隊(duì)列。
關(guān)于定時(shí)器要記住的最重要的事情是:指定的時(shí)間間隔表示何時(shí)將定時(shí)器的代碼添加到隊(duì)列,而不是何時(shí)實(shí)際執(zhí)行代碼。
a.重復(fù)的定時(shí)器

使用setInterval()創(chuàng)建的定時(shí)器確保了定時(shí)器代碼規(guī)則地插入隊(duì)列中,這個(gè)方式的問(wèn)題在于定時(shí)器代碼可能在代碼再次被添加到隊(duì)列之前還沒(méi)有完成執(zhí)行,結(jié)果導(dǎo)致定時(shí)器代碼連續(xù)運(yùn)行好幾次,而之間沒(méi)有任何停頓,javascript引擎在使用setInterval時(shí),僅當(dāng)沒(méi)有該定時(shí)器的代碼是才將定時(shí)器的代碼添加到隊(duì)列中,但是這樣會(huì)導(dǎo)致1、某些間隔時(shí)間被跳過(guò)。

b.多個(gè)定時(shí)器之間的執(zhí)行間隔會(huì)比預(yù)期的小

// 解決辦法
setTimeout(function () {
    //處理中
    setTimeout(arguments.callee, interval)
}, interval)

數(shù)組分塊

function chunk(array, process, context) {
    setTimeout( function() {
        var Item = array.shift();
        process(item)
        if (array.length > 0) {
            setTimeout(arguments.callee, 100)
        }
    }, 100)
}

函數(shù)節(jié)流

var processor = {
    timeoutId = null,
    // 實(shí)際進(jìn)行處理的方法
    performProcessing: function() {
    // 實(shí)際執(zhí)行的代碼
},
// 初始處理調(diào)用的方法
process: function () {
    clearTimeout(this.timeouId);
    var that = this;
    this.timeoutId = setTimeout(function () {
        that.performProcessing();
    }, 100)
    }
}

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

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

相關(guān)文章

  • 10個(gè)用Console來(lái)Debug的高級(jí)技巧

    摘要:在本文,我會(huì)為你介紹一些用老式來(lái)的技巧。使用可以將聚合成組,并且形成嵌套的層級(jí)。最后一個(gè)壓軸的你可以使用將對(duì)象以表格的形式打印出來(lái)。自從年雙十一正式上線(xiàn),累計(jì)處理了億錯(cuò)誤事件,得到了金山軟件百姓網(wǎng)等眾多知名用戶(hù)的認(rèn)可。 譯者按: 我們往往會(huì)局限在自己熟悉的知識(shí)圈,但也應(yīng)擔(dān)偶爾拓展一下,使用一些不常見(jiàn)而又有用的技巧,擴(kuò)大自己的舒適圈。 原文: 10 Tips for Javascrip...

    Hwg 評(píng)論0 收藏0
  • 前端小案例

    摘要:謹(jǐn)以此文我在北京一家公司打工兩個(gè)月,昨夜露宿街頭我是一名程序員,在北京打工兩個(gè)月,如今身上只剩吃碗面條的錢(qián)。昨夜在北京寒冷的公園和同事與流浪漢一起露宿一夜,因?yàn)槲覀儽焕习逋锨妨斯べY。我在兩個(gè)多月前,前往北京。 你可能不知道的 14 個(gè) JavaScript 調(diào)試技巧 了解你的工具可以在完成任務(wù)的過(guò)程中發(fā)揮重大作用。盡管傳言 JavaScript 難以調(diào)試,但是如果你掌握了一些調(diào)試技巧,...

    codeGoogle 評(píng)論0 收藏0
  • 高級(jí)函數(shù)技巧-函數(shù)柯里化

    摘要:如果你對(duì)函數(shù)式編程有一定了解,函數(shù)柯里化是不可或缺的,利用函數(shù)柯里化,可以在開(kāi)發(fā)中非常優(yōu)雅的處理復(fù)雜邏輯。同樣先看簡(jiǎn)單版本的方法,以方法為例,代碼來(lái)自高級(jí)程序設(shè)計(jì)加強(qiáng)版實(shí)現(xiàn)上面函數(shù),可以換成任何其他函數(shù),經(jīng)過(guò)函數(shù)處理,都可以轉(zhuǎn)成柯里化函數(shù)。 我們經(jīng)常說(shuō)在Javascript語(yǔ)言中,函數(shù)是一等公民,它們本質(zhì)上是十分簡(jiǎn)單和過(guò)程化的。可以利用函數(shù),進(jìn)行一些簡(jiǎn)單的數(shù)據(jù)處理,return 結(jié)果,...

    shixinzhang 評(píng)論0 收藏0
  • [譯]148個(gè)資源讓你成為CSS專(zhuān)家

    摘要:層疊樣式表二修訂版這是對(duì)作出的官方說(shuō)明。速查表兩份表來(lái)自一份關(guān)于基礎(chǔ)特性,一份關(guān)于布局。核心第一篇一份來(lái)自的基礎(chǔ)參考指南簡(jiǎn)寫(xiě)速查表簡(jiǎn)寫(xiě)形式參考書(shū)使用層疊樣式表基礎(chǔ)指南,包含使用的好處介紹個(gè)方法快速寫(xiě)成高質(zhì)量的寫(xiě)出高效的一些提示。 迄今為止,我已經(jīng)收集了100多個(gè)精通CSS的資源,它們能讓你更好地掌握CSS技巧,使你的布局設(shè)計(jì)脫穎而出。 CSS3 資源 20個(gè)學(xué)習(xí)CSS3的有用資源 C...

    impig33 評(píng)論0 收藏0
  • JS進(jìn)階篇--JS數(shù)組reduce()方法詳解及高級(jí)技巧

    摘要:基本概念方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值從左到右開(kāi)始縮減,最終為一個(gè)值。例進(jìn)階應(yīng)用使用方法可以完成多維度的數(shù)據(jù)疊加。在該函數(shù)內(nèi)部,則執(zhí)行多維的疊加工作。參考的內(nèi)建函數(shù)數(shù)組方法的高級(jí)技巧 基本概念 reduce() 方法接收一個(gè)函數(shù)作為累加器(accumulator),數(shù)組中的每個(gè)值(從左到右)開(kāi)始縮減,最終為一個(gè)值。 reduce 為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù),不包括...

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

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

0條評(píng)論

閱讀需要支付1元查看
<