js笔记

记录下学习过程中的js知识点,非原创纯属笔记:

1.基本类型:typeof:返回类型的字符串
number:数字类型,使用.来写入小数;科学计数法:如1.1e6;常用运算符:+-*/%(余数),字符串与数值运算:+:数字自动转换成字符串;*:尝试将字符串转换成数字;Number():类型转换,非数字转换返回NaN;对于NaN所有的数字运算结果都是NaN;
string:文本类型,使用成对引号("",'')标记,前后一致,转义:\;常用:\n \t \" \\;+:连接,连接前其它类型自动转化为string,null等同样转化为"null"等;相关方法:split(分隔字符串);charAt(index):返回index位置的字符,从0开始,若不存在返回"",slice(start,end):从start开始到end结束的字符串,位置无效返回"",位置有效将不存在的内容忽略掉,slice(start):从start到字符串结束的字符串;indexOf(char,[startindex],[count])报告指定字符在此实例中的第一个匹配项的索引。搜索从指定字符(第一个字符)位置开始,并检查指定数量的字符位置。
Boolean:true|false;通过比较产生:>< == != >= <= (字符串比较基于Unicode标准)===:是否精确相等,类型和值都相等;其中NaN==NaN返回false; null==undefined,false==0,""==0,返回true;布尔逻辑:&& || !,或的优先级最低,其次是&& 非布尔值转换为布尔类型:数字0,字符串"",null,undefined,NaN都转换成false;其余都转换成true;
object:
function:函数值;
undefined:未赋值变量(缺省参数)或未特定指定返回值函数的返回值
2.||:如果两边参数都是布尔值,则为布尔逻辑;其它情况:首先检查左边的值,如果能将该值转换为true,则返回左边的值,否则返回右边的值;如果左边的值为true,则不执行右边代码
&&:如果两边参数都是布尔值,则为布尔逻辑;其它情况:首先检查左边的值,如果能将该值转换为false,则返回左边的值,否则返回右边的值;如果左边为false,则不执行右边代码;
3.函数:function关键字 函数名称(参数){函数体}
局部变量只适用于函数的参数和函数内部以var关键字定义的变量,若与非局部变量同名则引用局部变量不引用非局部变量.
词法作用域:在函数"上面"定义的所有变量都是可见的.
函数栈特性:每次一个函数被调用时,当前上下文就会压入栈的顶部,函数返回时,在顶部的上下文就会出栈重新获得.
函数值:function类型的变量
闭包特性:函数中包裹一些局部变量的函数;
js中不会限制传入函数的参数数目,多余参数则被忽略掉,过少用undefined代替
4.数据结构:
属性:使用中括号["变量名"(数字可以不用引号)]或点标记法:.变量名
对象:{}json数据类型:添加新属性:用=设置一个不存在的属性;如果属性名称为不合法的变量名称,只能用中括号来访问.修改属性值:直接重新赋值;delete:删除属性;访问一个不存在的属性为undefioned,操作符in用来判断一个对象是否有某个属性,返回布尔值,与for一起用可以遍历整个对象的属性
5.数组:特殊的对象,类似可定义为{0:"",1:""}对象的简化
新数组用中括号来创建,var arr=[](空数组);读取值用中括号法,序号从0开始;length表示数组有多少值
有关方法:push(值)在数组末尾插入值,pop():删除末尾值并将其返回,join(连接字符串):用相应的连接字符串连接数组的值 concat(可以是具体的值,也可以是数组对象。可以是任意多个):用于连接两个或多个数组 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
6.异常处理:try{代码段} catch(e){} finally{},throw关键字用于引发异常的位置,Error对象:异常对象,使用catch显式异常时一定不要catch太多的内容,要对显式异常加以特殊判断处理
7.函数式编程:利用高级函数(操作其他函数的函数)来对过程进行高度抽象函数化处理.常用高级函数:遍历\修改\归约\映射,一般适用于有明确的规则,可以将复杂算法分解成一些基本算法的组合.创建分布应用:实现接受一个函数X,一个或多个参数,创建一个新的函数调用X,原来的参数和新传入的参数在调用的时候都会用到;也就是原有函数扩展参数,而不用更改调用参数时,注意新扩展参数的顺序与实现中定义的一致
8.面向对象编程:对象:外界只能通过有限明确的接口(通过具体的方法\属性)才能接触对象;
  对象方法的定义:1)简单的附加一个函数值=funtion(){},在这个方法中,this变量指向调用该方法的相关的操作对象,2)方法也可以绑定对象: method.apply(对象,[arguments]) 或method.call(对象,参数值,参数值)
 构造函数:类似面向对象中的构造函数,提供了新的new 构造函数来创建对象的方法
 对象原型:constructor:通过构造函数的propotype属性访问,原型的属性影响对象,改变对象永远不会影响到原型,查找一个属性值时,首先会查询该对象的自身的所有属性,若无则查找原型,继续递归查找原型的原型,都没有为undefind,当为一个属性设置值时,不是在原型上设置,而是在当前对象自身的属性值上,自身对象可以对属性进行重载.任何时候该原型都可以在基于它的所有对象上添加新的属性和方法,原型是存放对象共同值的最佳场所。
    创建对象,对象从原型上获得一些属性,可以用Object.prototype.propertyIsEnumerable.call(object,property)来判断属性是否属于当前对象上的属性,还是原型上的属性。当对象充当属性集来用时,最好是构建一个词典类型来实现,避免原型污染;词典类型通常提供四个接口:存key,读key,是否包含key,遍历
     基本的编程原则:使一个对象类型的依法和职责尽可能少;1)创建对象方法2)单独函数实现3)添加新的类型对象

posted @ 2013-01-15 15:51  雄鹰低飞  阅读(224)  评论(0编辑  收藏  举报