赞
踩
一、js的组成
1、ECMAscript:javascript的核心语法
2、DOM:
3、BOM:浏览器对象模型。最常见的就是window。
二、js的基本类型与复杂类型
基本类型:数值类型 number、字符串类型string、布尔类型boolean、undefined、null注意:写类型时全部是小写
大写是函数,构造函数就是大写。
复杂类型:数组Array、对象Object、日期Date、Math、正则RegExp、Number、String、Boolean、函数Function
三、typeof运算符(获取类型的运算符)
typeof null 类型是object 一个变量只声明没有赋值,获取到的值就是:undefined
null值只能给变量赋值,任何变量都获取不到null值
typeof(new Function()) 类型是function,其余的例如typeof(new Math)都是object
使用typeof运算符获取到的结果,是string类型
四、相等和全等
null==undefined //true
=== 1、先判断类型是否相同,如果不同直接就false 2、判断值
基本类型比的是值本身,复杂类型要注意,比的不是值本身。{}==={}//false 就好像长得一样的双胞胎,两个{}是两个不同的对象,不是同一个对象。var obj1={};var obj2={};
五、in运算符
for-in作用:遍历对象
for(var k in obj){
k就是键,k是变量,是形参,要被对象中的实参代替。k对应的值得获取是:obj[k],不能写成obj.k,obj.k访问的是对象的属性,对象里面没有k这个属性,访问不到k对应的值。在for-in循环中,不能直接使用obj.k访问对象属性。
}
in的作用:(window自己有name属性)
语法:属性 in 对象
判断 属性 是否在对象中,如果在对象中(通过对象可以访问到这个属性)返回true,如果没有(访问不到),返 回false。console.log(“name” in obj);"name"必须带引号,不然会报错,name不带引号是变量,是访问不到 的。可以“toString” in obj//true,但是null和undefined不能用toString,只能用String
var arr=[1,3,9]; console.log(arr.toString())//1,3,9字符串 除了null和undefined都能调用toString(内置对象)
console.log(obj.toString())//[object Object];toString.call([])//[object Array];toString.call(new Date()) //[object Date]
var arr=[1]; console.log(1 in arr)//false 因为数组看的是索引,此时索引为0,没有索引1,因此值为false
六、创建对象的方式
1、字面量方法
⑴ var obj={};;obj.name="jack";
⑵ var obj={ name:"jack"}
2、使用new运算符
var obj = new Object(); //当没有参数时,此处的小括号可以省略。 obj.name="jack";
七、值类型与引用类型(重点)
值类型:变量中储存的是数据本身
引用类型:变量中储存的是数据的地址(引用)
八、delete删除
作用:1、删除不是使用var声明的变量,使用var声明的变量不能用delete删除。
2、删除对象中的属性。var o={name:“wu”};var b=delete o.name; console.log(b);//false
特殊情况:var o={name:"wu"};var b=delete o.toString; console.log(o.toString())//true
3、删除数组的索引。
九、异常处理和手动抛出异常
①try-catch-finally catch和finally都可以省略
try{
放可能存在异常的代码
} catch (e){ e是error
如果try中出现了异常(错误)就会执行catch中的代码
}finally{
不管try有没有出现错误,都会执行
}
②手动抛出异常处理
十、创建函数
将代码进行封装, 复用的逻辑单元 称为 函数.
函数:复用(代码的重复利用).构造函数:复用(模板,复用产生对象的代码).
3种方式创建函数:1、函数声明。2、函数表达式。3、new Function()
①function fn(){}
②var fn=function(){}
③var fn=new Function(“console.log(‘obj’);”);
3种方式的区别:1、提升。函数声明:不管函数在那个地方声明的,任何位置都可以访问到
2、出现的位置不同。函数声明不能出现在其他语句中。出现在全局环境中
3、this
十一、面向对象
面向对象:找到能完成这个事情的对象,让它帮你完成就行(调度者)。其实是把自己放在一个调度者的位置
面向过程:所有的细节、步骤、过程,要一步一步亲历亲为(执行者)。其实是把自己放在一个执行者的位置
面向对象是对面向过程的封装。
面向对象优势(解决函数封装问题):封装代码,使代码更好维护;减少全局污染;将功能相近的代码组织到一起维护方便,找错方便。
面向对象的基本模型:将数据与功能封装成函数(方法);将相关的功能绑定到一起(对象);将功能进行分组(模块)。
对象的属性都是string类型。
var o1={}; var o2={}; console.log(o1==o2)//false
var o1={}; var o2={}; var obj={}; obj[o1]="jack";console.log(obj[o2]);//"jack"因为此时对象作为属性,被隐式转化为“”,由于o1和o2都是空对象,都被转化为空字符串“”,那么此时obj[o1]与obj[o2]是相同的,访问的是同一个属性,即obj[""],所以此时obj[o2]能够访问到obj[o1]的属性。
十二、函数的参数
函数的参数:1、 把函数参数看作是变量,只能在函数内部使用。2 、函数调用时参数传入顺序不能颠倒。
3 、参数的值是在函数被调用的时候通过传入的参数设置的值。
4 、函数调用时不传入参数,则函数内部获取参数的值为:undefined。
形参(形式参数),即函数定义时的参数,只起到占位的作用,等到函数被调用的时候,会被传入的具体值代替。
实参(实际参数),即函数被调用时的参数,是一个具体的值或者表达式(true、[2, 2]、{ name: "two"} 等)
函数多了之后的问题:1、全局污染。2、使得维护变得困难。解决方法:使用对象
十三、常用DOM操作
四字总结:增删改查
1.获取元素操作:getElementById getElementsByTagName getElementsByClassName
2.元素节点操作:appendChild insertBefore removeChild replaceChild cloneNode createElement createTextNode(创建文本节点)
3.属性节点操作:getAttribute setAttribute removeAttribute
4.常用DOM属性:className innerHTML innerText/textContent value children
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。