1、javascript 是一种基于对象,和事件驱动的并具有安全性的脚本语言;基于对象,动态语言,无需编译,直接解释执行;2、可以放在的地方;A、<head>中,一对<script></script>之间;B、单独文件中 <script src=””type=”text/javascript”></script>C、将脚本程序代码作为属性值、<a href=”javascript:alert(new Date());”>javascript</a>3、保留字以及关键字;4、javascript基本语法:4.1 标识:大小写字母,数字,下划线,和美元符号:不能以数字开头;4.2 javascript严格区分大小写4.3 每条语句必须以分号结束;(不写,一般没事,但是可能会引起不必要的歧义)4.4 多行注释 /* */ 单行注释://4.5<script type=”text/javascript”>Function test(){Var i=100; //不加var 就会自动变成全局变量,这样在以后会产生冲突;Alert(i);}Test();</script>5、数据类型:(数字,boolean,String字符串;日期什么的是对象了)特殊值:NaN,Infinity,函数isNaN();isFinite();Boolean,取值只能是true,和false 全是小写逻辑运算符var a=100;var b=0;var c=a||b;alert(c);//返回值是100:就是当两边返回值都是false时,返回第一个或最后一个不为false的值;6、什么值在javascript中是false?逻辑运算中,0,“”,false,null,undefined,NaN均表示false 6.1想要赋个默认值:怎么办?function test(e){e=e||new object();if(!='ang'){alert(e);}}test(3);看这里:Var sth=test;//相当于将函数赋给一个变量,这个变量之后可以传参运行了;Alert(sth(100));7、javascript中的系统函数:7.1 编码解码:alert(encodeURI('sht中午啊'));处理中文情况;decodeURI,对编码的进行解码;7.2、数值转换;parseInt(‘’);//将其他类型转换成数字;原理:从第一个字符开始,如果第一个可以转换就继续向下走,直到不能转,省略后面,如何第一个都不行,就直接返回NaN格式;var a=parseInt(‘555abc’);//返回555;var b=parseInt(‘cc’);//返回NaN;7.3 eval;将其中的参数字符串当做一个javascript表达式执行;var a="alert(fuck you);";eval(a);var b=eval("{a:'thank',b:30}");alert(b.b);//为啥没有反应啊!二、javascript的类1、 javascript的内部类;所有类的基类都是 object;可以动态的给类添加方法和属性;//java无法做到的,记住啊!var obj=new Object();obj.sayhello=function(){alert(this.msg);}obj.msg='haha i can have my class';obj.sayhello();Var n1=new Number(1100);Alert(n1.toString(2));//返回n1的二进制表示形式;var s='ang';s=s.link('');alert(s);//<a href=’’>ang</a>弹出这个形式;var sss.Alert(typeof sss);//查看数据的类型;Alert(sss.constructor);//查看数据的构造函数;alert(Math.random());Var d=new Date(); alert(d.getFullYear());运行环境提供的一些变量:2、BOM:浏览器对象模型2.1 window 对象主要方法;2.1.1 弹出窗口;2.2 定时器函数:function say(){return function (){alert("fuck");}}function funhello(){window.setTimeout(say(),3000);}要求第一个参数只能是函数,或者字符串,所以,就返回一个匿名函数供调用;Window.history;//可以直接写history//所有对象默认都是在window下面的;三、DOM对象:Location对象,可以访问地址栏里的内容例子如何使用这些对象,检查浏览器版本,提高兼容性;2 dom 概述:所有的dom节点都有的一些东西:想要页面加载完成之后再执行代码window.onload=function (){}这里:document.documentElement;得到html那个节点:如何得到body节点?Var body=stChild;Body.appendChild(newNode);所有节点都有一个parentNode3、javascript操作对DOM元素进行增删改查;查找:document.getElementById();动态添加元素:直接往document的元素上节点,每次添加一个就会进行一次刷新,影响效果,考虑使用createDocumentFragment();对表格操作:提供的方法操作table;查找table中的某个单元格:Var cell=table.tBodies[0].rows[1].cells[0];(浏览器解析之后变成的一套API,比较保险)使用xhtml DOM的table api 来创建表格:访问DOM对象的属性:Style 属性:只要浏览器一解析,就会给每个元素增加个style属性,这个是个只读属性四、事件驱动(注意浏览器不同所造成的差异);1、匹配不同浏览器:Function test(e){e=e||event}2、绑定多个处理函数:function initEvent(){//if(document.attachEvent){$("msg").attachEvent("onclick",shout);$("msg").attachEvent("onclick",shout2);//IE独有的绑定多个监听事件方法;/* }else{$("msg").addEventListener("click",shout);$("msg").addEventListener("click",shout2);// }*/3、ie和firefox差别:DOM标准中会把事件对象作为参数传递给函数,而IE则可以通过window.event 来获取;事件对象所具有的属性,比较重要的有:preventDefault();(firefox采用)IE的有4.ie和Firefox共有的特性:问题:IE与Firfox下阻止鼠标右键事件:Function stopContextMenu(){ document.oncontextmenu=function(e){e.preventDefault(); }}5、键盘事件:其他事件:表单不提交:<form onsubmit=”return false;”></form> 五、 javascript的面向对象的特性:1.容易混淆的概念;function Animal(name){=name;this.age=0;}var a1=Animal;//alert();输出函数;var a2=Animal();//输出 undefined var a3=new Animal();//输出 object var a4=new Animal;//输出 object2、函数的可变参数:(firefox下查看:console.dir(/info)(arguments);)3、javascript中一切都是对象,函数也是一种特殊的对象,类型为Function;Var s1=function(){return 123;},alert(s1.constructor);Var num1=12; alert(num1.constructor)还可以这样执行函数:Var func1=new Function(“alert(123)”); func1();//执行函数了;4、闭包:定义—函数里面嵌套函数,就是闭包;Var func1=function(){Var d=0;Func2=function(){D++;}}Var func3=func2(); func3();为什么可以使用d,就是因为javascript中的闭包机制,使得d不会被消除掉;以后可以使用闭包实现封装5,(重点)函数的作用域及this5.1 call,和apply的用法和区别,(都是用来绑定函数,就是传参方式不同);想让其他对象,使用自己定义的函数呢?(直接用call来绑定一个作用域,)5.2 访问对象属性,B3.v=’ang’;等价于b3[‘v’]=’ang’;怪异的合法:Var c={‘1 1’:45}; alert(c[“1 1”]);5.3、遍历对象中的元素function showInTurn(){for(var key in window){document.getElementById('msg').innerHTML+=(key+":"+ window[key]+"<br/>"); }}5.4动态删除对象中的成员delete b3.v;//动态删除对象上的成员5.5 给所以的Number的实例都加上一个方法?Var d=new Number(5);Number.prototype.add=function(b){return this+b;}d.add(10);//这里就可以调用了,因为使用了延迟绑定;//给数组添加一个扩展方法:Array.prototype.indexOf=function(num){for(var i=0;i<this.length;i++){if(this[i]==num) return i;}return -1;}var aaa=['a','b','c'];//alert(aaa.indexOf('b'));。