J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

第18章 高级技巧

Posted on 2011-07-29 00:41 xcp 阅读(619) 评论(0)  编辑  收藏 所属分类: JavaScript高级程序设计(第2版)
1.高级函数 
    1.1 作用域安全的构造函数
         >例:function Person(name,age,job){
                    this.name=name;
                    this.age=age;
                    this.job=job;
                }
                var person = new Person("xcp",23,"program er");
               alert(person.name);//xcp
                alert(window.name);//undefined                

                但如果我这样生成对象呢?
                var person = Person("xcp",23,"programer");
                alert(window.name);/xcp
            
                这是为什么呢?
                问题出现在当没有使用new操作符来调用构造函数的情况,由于该this对象是在运行时绑定的,所以直接调用Person(),this会映射到window上

                解决办法呢?
                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);
                    }
                }

    1.2 函数绑定
        函数绑定要创建一个函数,可以在特定中指定参数调用另外一个函数。该技巧常常和回调函数与事件处理程序一起使用,以便在见函数作为变量传递的时候保留代码执行环境。
        例如:var handler ={
                    message :"Event handled",
                    handleClick:function(event){
                            alert(this.message);
                    }
                }
                var btn = document.getElementById("sub");
                EventUtil.addHandler(btn,"click",bind(handler.handleClick,handler));


2.高级定时器
    2.1 setTimeout clearTimeout
    2.2 setIntelval  clearInterval


3.拖放    
    3.1 常用写法
        EventUtil.addHander(document,"mousemove",function(event){
            var myDiv = document.getElementById("myDiv");
            myDiv.style.left  = event.clientX+"px";
            myDiv..style.top = event.clientY+"px";
        })



名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我