zoukankan      html  css  js  c++  java
  • js个人笔记

    1.  arr.indexOf(arr[a])   返回 arr[a]在数组中的序号
     
    2.  阻止默认事件(W3C e.preventDefault();  (IE)window.event.returnValue = false
     
    3. 阻止事件冒泡 (W3C)e.stopPropagation();   (IE)window.event.cancelBubble = true
     
    4. 基本数据类型按值传递数据,而对象类型按引用类型传递数据(高程3-69)
    var name = 1;
    var name2 = name;
    alert(name2);//1
     
    var name = "n1";
    var name.age= "22";
    alert(name.age);//undefined
     
    var o = new Object();
    var o1 = o;
    o.name = "a";
    alert(o1.name);//a
     
    5. 基本类型检测 typeof n n//"11",true,22,null,new object,未定义(高程3-71 )
    输出(string boolean number object object undefined).
    引用类型检测  a instanceof Object 返回(true或false) 即变量是否是给定的类型  
     
    6.访问局部变量比访问全局变量快,(原型链)从内往外搜索变量
     
    7.创建对象实例方法。1.new后面跟构造函数 var a = new object(); 2.使用对象字面量 var a={};
     
    8.访问对象的属性可以用点表示法,也可以用方括号。方括号的主要优点就是可以通过变量来访问属性,保留字和关键字都可以用方括号的方法来引用.
    除非必须使用变量来访问数据,建议使用点表示法。
     
    9.创建数组,var a = new Array(3);//创建长度为3的数组,var b = new Array("a");创建内容为a的数组,即如果参数为数字则创建该长度的数组.
     
    10.定义数组方法 1.var a = new Array(); 2. var a = [],数字的length是不只读的,如果设置的长度少于数组的长度则截取数组的长度,
    如果定义一个超过数组长度下标的元素,将增加数组的长度为下标长度加1,为数组添加元素等于数组的length长度项a[length]="a",
    即在数组的最后添加一项;
     
    11.数组join方法连接数组,分割字符串参数,默认逗号
     
    12.数组(尾)栈方法push向数组中添加项,在最顶部,返回数组的长度,pop方法弹出数组最后添加的项,返回弹出的项
     
    13.数组(头)队列方法shift,弹出最新进入的项,返回弹出的项,unshift方法,在数组最前添加项,返回数组的长度
     
    14.数组排序方法reverse和sort,reverse方法反转数组顺序,sort默认升序排序数组,sort接受一个比较函数作为参数,比较函数接受2个参数,
    第一个参数位于第二个参数之后则返回负数,相等则返回0,第一个参数位于第二个参数前面则返回正数,如需反转顺序执行返回相反的数即可
     
    15.数组concat方法,复制数组,可传递参数,即添加到复制的数组后面,可以是字符串或数组,原数组保持不变,slice方法,基于当前数组创建新的数组
    传递一个参数表示返回从参数位置开始到结尾的心数组,传递2个参数表示从第一个参数开始到第二个参数结束,但是不包括第二个参数结束位置,如果参数为夫
    则加数组长度即可
     
    16.数组splice方法,删除项(2个参数),第一个表示开始位置,第二个表示删除的项数,插入(3个参数,第二个为0),第一个表示开始位置,第二个后面的表示
    要插入的项,可插入多个,替换(3个参数),第一个表示开始位置,第二个表示要替换的项数,第三个表示要插入的项,方法返回删除的项,没有删除返回
    空数组
     
    17.数组indexOf和lastIndexOf,接受2个参数,第一个表示要查找的项,第二个可选表示从某个位置开始,lastIndexOf从后向前查,没有查到返回-1
      
    18.数组迭代方法every,filter,forEach,map,some
     
    19.数组缩小方法reduce,reduceRight
     
    20,函数声明与函数表达式的区别,函数声明是在其执行任何代码钱可用,而函数表达式必须等到执行到它所在代码行才真正的解释执行
     
    21.基本包装类型(字符串string,布尔boolean,数字number),调用基本的方法执行的流程是,1,先创建一个实例对象,2,在实例对象上调用方法。
    3.销毁实例对象
     
    22.字符串操作方法,charAt与charCodeAt,参数数字,返回字符串中改位置的字符,charCodeAt 返回字符的编码,concat字符串连接方法,把多个字符串连接起来,返回新的字符串,可以接受多个参数
     
    23.字符串截取方法,slice,substr,substring,第一个参数表示开始位置,slice与substring第二个参数表示字符串结束位置,substr第二个参数表上字符串长度
     
    24.字符串的查找函数,indexOf与lastIndexOf, indexOf从前向后找,lastIndexOf从后向前找,没有找到返回-1,第二个参数表示开始的位置,位置也是相反的
     
    25.字符串大小写转换方法toLowerCase与toUpperCase,
     
    26.JSON转换函数,JSON.parse把JSON字符串转成JSON对象,JSON.stringify把JSON对象转成JSON字符串
     
    27.字符串转JSON方法,类似JSON.parse
    $.parseJSON = function(data){
         if(window.JSON && window.JSON.parse){
              return window.JSON.parse(data);
         }
         // JSON RegExp
         var rvalidchars = /^[\],:{}\s]*$/,
         rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
         rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
         rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g;
         if ( rvalidchars.test( data.replace( rvalidescape, "@" ).replace( rvalidtokens, "]" ).replace( rvalidbraces, "")) ) {
              return ( new Function( "return " + data ) )();
         }
    }
    JSON转换字符串方法类似JSON.stringify
    $.JSONtostring = function(O){
        var S = [];
        var J = "";
        if (Object.prototype.toString.apply(O) === '[object Array]') {
            for (var i = 0; i < O.length; i++)
                S.push($.JSONtostring(O[i]));
            J = '[' + S.join(',') + ']';
        }
        else if (Object.prototype.toString.apply(O) === '[object Date]') {
            J = "new Date(" + O.getTime() + ")";
        }
        else if (Object.prototype.toString.apply(O) === '[object RegExp]' || Object.prototype.toString.apply(O) === '[object Function]') {
            J = O.toString();
        }
        else if (Object.prototype.toString.apply(O) === '[object Object]') {
            for (var i in O) {
                O[i] = typeof (O[i]) == 'string' ? '"' + O[i] + '"' : (typeof (O[i]) === 'object' ? $.JSONtostring(O[i]) : O[i]);
                S.push(i + ':' + O[i]);
            }
            J = '{' + S.join(',') + '}';
        }
        return J;
    }
     
    28.MATH函数,max最大,min最小,ceil向上舍入,floor向下舍入,round四舍五入,random随机数,返回某个区间的随机数= Math.floor(Math.random*可能数的总数+最小值) 
     
    29.创建一个函数默认为该函数创建一个prototype属性,这个属性指向函数的原先对象,原型对象默认获得constructor属性,这个属性包含一个指向prototype属性所在函数的指针(Person.prototype.constructor = Person),当调用构造函数创建对象实例后,该实例内部包含一个指针[[prototype指针]]或[__proto__]指向构造函数的原型对象(原型对象Person.prototype),这个连接存在于实例与构造函数的原型对象之间,而不是实例与构造函数  ,  当Person.prototype = {},指向一个对象字面量时,Person.prototype.constructor不再指向Person,constructor指向新对象的constructor(Object),可以设置指向原来的Person.prototype.constructor = Person
     
    30.实例可以访问原型中的值,但不能通过对象重写原型中的值,添加一个与原型中同名的方法,只是屏蔽原来的方法,delete可以重新获得原来的方法
     
    31.in操作符会通过对象能够访问给定的属性时返回true,无论该属性是在实例还是原型中
     
    32.在原型中查找值的过程是一次搜索,对原型的修改都会立即体现在实例上,
     
    33.可以为原型添加属性和方法,但如果重写整个原型对象,对象实例就必须放到重写原型对象后面,因为重写原型对象切断了构造函数与原型的联系,,构造函数调用时会为实例添加一个指向原型对象的指针[prototype],即实例对象的指针指向原型而不是构造函数
     
    34.(原型对象的不好)通过实例修改原型属性,其他实例的属性也同时修改,所以一般通过构造函数定义实例属性,原型定义方法和共享的属性(构造函数与原型创建自定义类型方法的最佳模式)
     
    35.子类型重写超类型的方法或添加不存在的方法,代码放在替换原型后面,在实现原型连继承的时候,不能用对象字面量的方式创建原型方法,因为这会重写原型链
     
    36.(166第三版)通过原型来实现继承时,原型也会变成另一类型的实例,这样,原型的所有属性对这类似是共享的,所有只有在要实例的构造函数中定义属性才不会被所有共享
     
    37.借用构造函数,就是在构造函数的内部通过call或apply的方法调用超类型方法,不会发生属性共享的情况,这种方式可以传递参数,为了不覆盖构造函数的方法,借用构造函数先执行,但是超类型原型的属性和方法不会被继承过来
     
    38.继承基本数据类型方法,如indexOf,通过赋值或赋值原型方法
    var arrnew = [];arrnew是类数组的数组,jquery对象
    var emptyArray = [];
    arrnew.indexOf = emptyArray.indexOf;
    或者
    arrnew.indexOf = Array.prototype.indexOf
     
    38.组合继承,就是通过借用构造函数来实现属性,通过原型来实现方法继承,(168第三版)
     
    39.闭包值方法,通过返回执行匿名函数,闭包内this需保存下来传递到闭包内
     
    40.BOM 操作window.frames[]数字或name最顶层top,里面还包含,top.parent.frames[],窗口位于屏幕位置:screenLeft和screenTop(兼容screenX和screenY)
     
    41.DOM父元素parentNode,子元素childNodes,上一个元素previousSibling,下一个元素nextSibling,当previousSibling和nextSibling是最后一个时,值为null,只有一个节点是都为null,第一个节点firstChild,最后一个节点lastChild,只有一个节点的时候指向同一个节点,没有子节点都为null\
     
    42.操作节点appendChild向文档尾部插入节点,如果插入的节点已存在则移动到最后,移动到特定的位置insertBefore,第一个参数是要插入的节点,第二个是参照插入的位置,如第二个参数为null,则与appendChild一样,replaceChild,第一个参数是要插入的节点,第二个参数要替换的节点.
     
    43.cloneNode创建节点的副本,接受一个布尔参数,表示是否深复制,true复制子节点,false只复制节点本身,   
     
    44.获取元素的属性getAttribute设置setAttrubute移除removeAttribute  
     
    45.文档片段 createDocumentFragment
     
    46.NodeList对象在访问DOM文档时都是实时查询的,所有需先保存再使用
     
    47.DOM扩展方法querySelector和querySelectorAll ,matchesSelector,getElementsByClassName,classList属性及其方法add、remove、toggle、contains
     
    48.访问样式属性float时,用cssFloat,ie用styleFloat,cssText会重写style属性,删除以前的style属性
     
    49.获取元素全部后的计算样式DOM使用window.getComputedStyle(dom,null).width(jquery使用document.defaultView)获取,IE使用dom.currentStyle.width获取,计算后的样式是只读的
     
    50.元素大小offsetHeight元素的高度offsetWidth元素宽度offsetTop元素距top的大小,offsetLeft距left的大小(相对父元素),clientWidth元素的宽度不包括边框,clientHeight元素的高度不包括边框,scrollTop滚动距离顶部的高度,scrollLeft滚动距离这边的宽度,scrollWidth元素的总宽度,scrollHeight元素的总高度
     
    51.DOM2级事件处理程序addEventListener和removeEventListener添加和删除事件,第三个参数true表示捕获阶段触发,false表示冒泡阶段触发,为兼容应该在冒泡阶段触发,addEventListener添加的事件必须removeEventListener移除,并且不能使用匿名函数的方式,IE中定义的是attachEvent和detachEvent方法,ie中事件需添加on前缀,使用attachEvent方法的情况下,事件处理程序在全局作用域中运行,即事件函数中的this===window,attachEvent添加的事件与执行的顺序相反,即先绑定的后执行,attachEvent添加的也只能detachEvent移除,并且不能是匿名函数
     
    52.兼容DOM的事件会传人一个事件对象event,event包含这个事件的相关信息,event只有在事件执行期间才有,阻止默认事件preventDefalut();阻止事件在DOM中传播stopPropagation(),即阻止事件捕获或者冒泡,event.target事件当前对象,IE中事件对象是window.event,阻止默认事件returnValue=false取消事件默认行为,阻止事件冒泡canelBubble=true阻止冒泡,事件当前对象是event.srcElement
     
    53.onload事件(window,document),DOM元素,img,(script,link部分支持),img的onload事件,新创建IMG(new Image())元素不一定要添加到文档后才开始下载,只有设置了src属性就开始下载,可以用来缓存图片,而script只有设置了src并添加到文档才会开始下载
     
    54.unload,resize,scroll事件,resize(window,body)当浏览器变化1像素时触发,而FF则在浏览器介绍变化时触发,
     
    55.焦点事件blur,focus事件都不冒泡(但有捕获)
     
    56.鼠标事件click,mouseover,mouseout.dbclick,mousedown,mouseup,(mouseenter,mouserleave不冒泡)
     
    57.鼠标事件坐标clientX,clientY表示事件发生在视口中的水平坐标和垂直坐标,不包含页面滚动的距离,页面坐标pageX,pageY表示鼠标在页面的位置(ie中pageX = clientX+document.body.scrollLeft||document.documentELement.scrollLeft),屏幕坐标位置screenX,screenY表示鼠标相对整个屏幕的位置,修改健shiftKey,aktKey,ctrlKey,metaKey默认为false,如果事件发生时健被按下相应的属性为true,mouseover和mouseout相关属性relatedTarget(ie中mouserout相关toElement,mouseover相关fromElement),鼠标按钮buttton属性(0-7表示按下不同键),(只IE支持的属性offsetX,offsetY目标距边界的坐标)鼠标滚轮事件(detail属性)mousewheel
     
    58.键盘事件keydown.keypress,keyup,event对象有KeyCode属性表示按下的字符编码(编码兼容有差异),keypress有charCode属性使用String.fromCharCode可以将编码转化成字符,文本事件textIput,
     
    59.HTML5事件,contentmenu,beforeunload,DOMContentLoaded,readystatechange,pageshow,pagehide,hashchange
     
    60.移动设备事件orientationchange,MozOrientation,deviceorientation,devicemoation
     
    61.触摸与手势touchstart,touchmove,touchend,touchcanel(属性touches,targetTouchs,changeTouches),gesturestart,gesturechange,gestureend
     
    62.事件委托,通过事件冒泡实现,在公共的元素上绑定事件,而且通过event.target判断触发(适合事件委托的事件包括click,mouseover,mouseout,keydown,keyup,keypress),优点,访问快,设置时间少,占内存少,模拟事件,触发dispatchEvent
     
    63.表单操作,select属性index,label,selected,text,value,添加选项appendChild,add,ie不支持new Option的appendChild添加,add可以,移除removeChild,设置null, 
     
    64.代码可读性,变量函数命名,解耦合,不修改基本类型的方法属性,避免全局变量,避免与null比较
     
    65. 性能:使用局部变量比使用全局变量快(原型链查找),使用局部变量保存全局变量,最小化语句var a,b;i++,数组,对象字面量等等
     
    66.字符串转换为数字 var a = parseFloat(str);var b = parseInt(str);var a = +(str);
     
    67.多维数组 var arr = new Array(); var arr[0] = new Array();var arr[1]= new Array();
     
    68.replace  str.replace(/正则/,function(a,b,c){}),a表示str中匹配的字符串,b表示在str字符串中的位置,c表示str字符串
     
    69.option 的add方法在ie6上第一个参数必须定义为 new Option对象
     
    70.option 的移动删除操作都会重置index属性
  • 相关阅读:
    个人作业十六:找水王
    个人作业十四:第一阶段个人冲刺
    个人作业十三:用户场景描述
    个人作业十二:最大子数组三
    个人作业十一:敏捷开发
    个人作业十:返回子数组二
    个人作业九:返回数组中最大子数组的和
    个人作业八:四则运算四
    个人作业七:四则运算三
    linux系统RAID
  • 原文地址:https://www.cnblogs.com/lyweb/p/3116965.html
Copyright © 2011-2022 走看看