js模擬打字效果


  $(function () {


            var input_type = {
                init:function ($obj) {
                    this.name = $obj.html().split("")
                    this.length = this.name.length;
                    this.i = 0;
                },
                pri:function () {
                    var $this = this
                    //在此處只能使用閉包,因為windown.settimeout使函數的this指向object windown,而非原型鏈的this對象。而此時我需要遞歸,所以只能將this對象傳到閉包內,遞歸匿名的閉包函數。
                    return (function () {
                        if ($this.i > $this.length) {
                            window.clearTimeout(Go)
                            return false;
                        }
                        var char = $this.name
                        $(".div1").append(char[$this.i])
                        $this.i++
                        var Go = window.setTimeout(arguments.callee, 100)//在這里arguments.callee妙用因為是匿名閉包,調用函數本身。
                    })
                }
            }


//建立class類
            function Input_type() {
                this.init.apply(this, arguments)
            }

            Input_type.prototype = input_type

//創建實例
            var p = new Input_type($(".content"))
            p.pri()()

        });

 總結:為了實現每次循環間隔時間,用window.settimeout遞歸的寫法。 因為想用原型鏈封裝,this沖突,所以遞歸調用匿名的閉包函數。用arguments.callee表示匿名函數。

demo:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM