zoukankan      html  css  js  c++  java
  • 《javascript高级程序设计》第一版笔记

    函数无明确返回值时,返回的值是undefined
    undefined表示对象已经声明,没有赋值.null表明对象不存在(null == undefined)
    强制转换为boolean类型时,undefined、null、空字符串、0都返回false,其它的返回true;
    在进行逻辑运算时,如果运算数不是原始Boolean类型,则返回对象。
    == 和 === 区别是 ==在比较前会进行自动类型转换,而===不会进行类型转换
    with语句是运行缓慢的代码段,尽量少用
    java 与 js 中switch 的区别: js中switch case可以用字符串也可以用不是常是的值
    js中可以声明两个函数名一样的函数而不会发生错误,后面的函数会覆盖前面的函数
    闭包就是函数的内部函数调用了外部的变量
    js原始类型: undefined、null、Number、String、Boolean
    js引用类型: String、Number、Boolean、Object (虽然名字和原始类型一样,但引用类型是原始类型的包装类)
    encodeURI和encodeURIComponent区别:后者只会转码所有的非标准字符,例如: 空格 --> %20
    escape和encodeURI最大区别: escape只能转码ascii字符,所有建议少用
    cell 向上取整, floor向下取整 ,round 标准的四舍五入
    location.reload(true); 强制刷新,默认是false
    obj.attributes.getNamedItem('id').nodeValue 访问节点的属性值
    document.all ie返回所有元素 document.getElementsByTagName('*') other browser return
    document.getElementsByName ie6仅仅检查input和img标签
    document.getElementById('abc') ie6中如果abc是某元素的id值同时也是另一个元素的name值 那么会返回这两个元素
    通过dom访问元素的class属性时 要通过className访问,不能通过class访问是因为class是保留字,估计留有其它用的
    可以通过NodeIterator和TreeWalker遍历dom
    dom事件分类 捕获型事件(DOM)、冒泡型事件(IE),dom型事件是坐documentElement向事件源捕获,然后再冒泡。而ie事件是直接从事件源向documentElement冒泡
    addEventListener、removeEventListener ie6-ie8均不支持 只支持attachEvent、detachEvent
    常用事件编号 回车:13 空格:32 回删:8
    var target=event.srcElement || event.target; //事件源对象
    var char=target.keyCode || target.charCode; //事件源对象接收的按键
    event.returnValue=false ie阻止事件 event.preventDefault(); dom兼容阻止事件
    event.cancelBubble=true ie阻止事件冒泡 event.stopPrapagation() dom兼容阻止事件冒泡   目前高版本的浏览器均支持cancelBubble和stopPropagation
    keyDown > keyPress > keyUp 按字符键产生事件顺序
    keyDown > keyUp 按非字符键产生的事件顺序
    一直按字符键不松,会一直产生keyDown、keyPress事件。一直按非字符键不松只会产生keyDown事件
    obj.currentStyle.color ie中的最终样式 getComputedStyle(obj,null).color dom中的最终样式,null可以是伪类时的样式 例如:'hover'
    innerHTML、outerHTML、innerText、outerText firefox(16.0.0)不支持*Text,支持*html,chrome都支持
    EvalError、ReferenceError、RangeError、synatexError、TypeError、URIError js异常类型
    document.domain='qq.com'  设置域,可以跨子域访问。只能设置url中已经存在的值,所有baidu.com就不能设置成功
    1160 单个tcp-ip包的大小,所有尽量控制js文件的大小在1160字节
    
    /* 数组连结比'+'性能更高 */
    function StringBuffer(){
        this._strings=new Array();
    }
    StringBuffer.prototype.append=function(str){
        this._strings.push(str);
    }
    StringBuffer.prototype.toString=function(){
        return this._strings.join('');
    }
    var d=new Date();
    var sb=new StringBuffer();
    for(i=0;i<100000;i++){
        sb.append(i);
    }
    sb.toString();
    var d2=new Date();
    console.log(d2-d);
    
    /* 混合构造/原型方式*/
    function o(a,b,c){
        this.a=a;
        this.b=b;
        this.c=c;
    }
    o.prototype.m=function(){
        console.log(this.a);
    }
    var t1=new o(1,2,3);
    var t2=new o(4,5,6);
    t1.m();
    t2.m();
    
    /* call 和 apply */
    function classA(a,b){
        console.log(a+','+b);
    }
    function classB(a,b){
        classA.call(this,a,b); //参数为列表
        classA.apply(this,arguments); //传递为数组
        this.a=a;
        this.b=function(){
            console.log(a);
        }
    }
    var t1=new classB('1','2');
    t1.b();
    var t2=new classA('3','4');
    
    /* 批量添加节点 */
    var arr=[1,2,3,4,5,6];
    var oFragment=document.createDocumentFragment();
    for(i in arr){
        var oDiv=document.createElement('span');
        var oText=document.createTextNode(i);
        oDiv.appendChild(oText);
        oFragment.appendChild(oDiv);
    }
    document.body.appendChild(oFragment);
    
    /* dom 访问节点*/
    obj.firstChild 
    obj.lastChild
    obj.childNodes
    obj.nodeName
    obj.nodeValue
    obj.nodeType
    obj.ownerDocument 这个节点所属的文档
    obj.previousSibling 上一个兄弟节点
    obj.nextSibling 下一个兄弟节点
    obj.hasChildNodes 是否包含兄弟节点
    obj.attributes 返回节点包含的属性数组
    obj.appendChild 
    obj.removeChild
    obj.replaceChild(newNode,oldNode)
    obj.insertBefore(newNode,refNode)
    
    /* dom 创建节点 */
    document.createElement
    document.createTextNode; 创建文本节点(text)
    document.appendChild;
    document.createDocumentFragment 文档碎片,把批量的节点添加到fragment后再添加到目标元素,减少界面重绘,提高性能
    
    /* addEventListener*/
    function show(){alert('clicked');}
    var arr=[1,2,3,4,5,6];
    var oFragment=document.createDocumentFragment();
    for(i in arr){
        var oDiv=document.createElement('div');
        var oText=document.createTextNode(i);
        oDiv.addEventListener('click',show,false); //false:冒泡时触发 true:捕获时触发
        oDiv.appendChild(oText);
        oFragment.appendChild(oDiv);
    }
    document.body.appendChild(oFragment);
    
    /* 兼容事件绑定*/
    var EventUtil=new Object;
    EventUtil.addEventHandler=function(oTarget,sEventType,fnHandler){
        if(oTarget.addEventListener)
                oTarget.addEventListener(sEventType,fnHandler,false); //false 冒泡时触发
        else if(oTarget.attachEvent)
                oTarget.attachEvent('on'+sEventType,fnHandler);
        else
                oTarget['on'+sEventType]=fnHandler;
    }
    EventUtil.removeEventHandler=function(oTarget,sEventType,fnHandler){
        if(oTarget.removeEventListener)
            oTarget.removeEventListener(sEventType,fnHandler,false)
        else if(oTarget.detachEvent)
            oTarget.detachEvent('on'+sEventType,fnHandler);
        else
            oTarget['on'+sEventType]=null;
    }
    
    /* 查看css样式表中的样式 */
    var oCSSRules=document.styleSheets[0].cssRules || document.styleSheets[0].rules;
    var css='';
    for(i=0;i<oCSSRules.length;i++) //样式表规则的集合
        css+=oCSSRules[i].cssText;
        //oCSSRules[i].style.color; //访问解析后的样式
    console.log(css);
    
    
    
    /*js 私有、静态、实例属性*/
    function Person(age,face){
            var age=age; //私有
            this.face=face; //实例
            Person.gender='man'; //静态属性
    }
    var p1=new Person(20,'圆脸');
    var p2=new Person(22,'尖脸');
    Person.gender; //必须在Person构造函数运行后(Person() || new Person())才能调用到值
    p1.gener;
    p1.age;
    p1.face;
  • 相关阅读:
    bzoj2751
    bzoj1483
    bzoj1011
    bzoj1412
    bzoj1820
    bzoj1295
    bzoj3444
    Java--Exchanger用于进行线程间的数据交换
    Java--Semaphore控制并发线程数量
    Java--Spring AOP 源码散点记录(最后整理成一篇博客)
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2781157.html
Copyright © 2011-2022 走看看