javaScript:通用、跨平台、中立于厂商的脚本语言;解释型的,按出现的顺序来执行标签;客户端的(嵌入网页中、依赖于客户端);弱语言类型(定义变量时对数据类型和初始化没有要求);基于原型的面向对象语言。
javaScript功能:对标签的全面控制(增、删、改);嵌入动态文本;响应网页事件;处理Cookies;校验用户输入数据;检测浏览器。
1、面向对象 《 对象的原型是对象;原型的对象是原型》
对象的实例化《对象定义(定义类)==>prototype(类模版)==>对象实例》
工厂方式《通过方法(new一个Object对象,再添加对象的属性和方法)产生对象》
构造方法方式《类中设置属性和方法;再通过new类来产生对象》
原型方式《定义一个空类,用类的prototype来设置属性和方法;通过new类来产生对象》
适用型《构造的部分设置私有的属性和方法,原型部分设置共用的属性和方法;用new产生对象》
对象的继承
对象冒充《冒充——>继承——>删除冒充——>添加新属性和方法》
call()方式《父类.call(this(对象),参数列表)——>添加新属性和方法》
apply()方式《父类apply(this,参数数组)——>添加新属性和方法》
原型链《定义对象——>对象调用prototype添加新属性和方法》
2、优先级
按出现的顺序来执行标签
可以利用script标记的内联【<script type="text/javaScript">javaScript代码</script>】和外联【<script type="text/javaScript" src="外部文件.js"></script>】,事件,伪代码【<a href="javaScript:alert("超人")">伪代码</a>】来实现javascript的引用。
3、技术体系
javaScript核心语法(ECMAScript) 【】《ECMAScript指定的js的数据类型、变量、运算符、语句等》
变量数据类型 《变量的定义使用关键字【var】;有5种原始的数据类型3种引用数据类型》
【undefined】《函数、变量没指定值时默认》
【null】《undefined的派生》
【boolean】《“==”只是比较内容,“===”比较内容和类型,字符串不为空、数值非0、有对象 时都为True》
【number+NaN】《parsInt():返回非数字以前的数值;parseFloat() ;number(value)将value整体装换
》
【string】《唯一没有固定位数的数据类型;length;toString();1个字符串有两行可以在第一行末添加一个反斜杠或“+”》
*javascript对大小写敏感且变量必须以字符或下划线开始。
函数 【function 方法名(参数可以没有,自动匹配){}
】
【typeof+instanceof】《检查数据类型,前者针对原始数据类型后者针对引用类型》
【isFinit()】《判断是否无穷数》
【isNaN()】《判断是否为非数值类型》
注释
行注释【//……】块注释【/*……*/】
关键字
Delete/function/with/var/in/do/enum/export/const/goto/transient/volatile/debugger
原生对象和内置对象 【由ECMAScript规范】《原生对象:由javaScript提供、独立于宿主环境,内置对象:不需要显示初始化的原生对象》
字符串对象
样式http://www.w3school.com.cn/tiy/t.asp?f=jsrf_string_style
String.big/small/ bold/italics/blink/fixed/strike/toLowerCase/toUpperCase/sub/sup()
String.fontcolor("Red")/fontsize(16) /link("http://www.w3school.com.cn")
日期时间对象
当前时间【Date()】
1970年到指定时间的毫秒数【new Date().getTime()】
设置年月日并转为UTC字符串【new Date().setFullYear(1992,10,30).toUTCString()】
星期几【 new Date() .getDay()】
function startTime(){ var today=new Date() var date=today.getDate() var h=today.getHours() var m=today.getMinutes() var s=today.getSeconds() // add a zero in front of numbers<10 document.getElementById('txt').innerHTML=h+":"+m+":"+s t=setTimeout('startTime()',500) }
数组对象
创建数组【new Array()】
合并数组【数组.concat(数组)】《新数组元素个数是两者之和,不会去重。》
数组转为字符串【数组.join(fengef)】《转为在数组元素之间插入指定分隔符的字符串》
数组排序【数组.sort()】《sort方法比较的是什么呢?字符串型数组可直接用,而数字型字符串需要做差。》
便利数组【for……in】
数学函数对象【Math】
常数【Math.E】圆周率【Math.PI】平方根【Math.SQRT2】2的自然对数【Math.LN2】以2为底的e的对数【Math.LOG2E】
浏览器对象模型(BOM) 【】《宿主对象:与宿主环境相关的对象》
参见:http://690284951-qq-com.iteye.com/blog/1447266
文档对象模型(DOM) 【】《由于页面上不止一个元素可以响应相同的事件,为了控制响应顺序,才在ie4.0和Netscape4.0中引入事件流。时间冒泡:事件从事件发生的目标最内部开始触发,向上触发到最外部(document);事件捕获:从最外层对象(window(需要程序员指定)|document)到最里层对象的顺序触发。》
事件处理模型 【】《》
进入或离开页面时触发
【onload+onUnload】《例如:Cookie操作,所有标签加载完后触发onload》
表单验证
【onFocus】《》
【onBlur】《》
【onChange】《》
【onSubmit】《点击表单提交按钮,表单数据上传前触发》
鼠标事件《时间发生顺序:click,dblclick,mouseover,mouseout,mousedown,mouseup,mousemove》
【onMouseOver】《》
【onMouseOut】《》
键盘事件《事件发生顺序:keydown,keypress,keyup》
【】
html事件《》
【οnerrοr=try……catch+throw】《chrome、opera 和 safari 浏览器不支持 onerror 事件。throw申明异常》
事件的绑定《绑定到事件属性时只需函数名,加括号则直接执行。》
【attachEvent(" 事件属性 ",方法)&detachEvent(" 事件属性 ",方法)+addEventListener("事件属性去on",方法,true) +removeEventListener("事件属性去on",方法,true表示在捕获阶段触发)】
*DOM先发生捕获后发生冒泡;起止都在document。
3成熟框架比较【就Queryjs—Ext.js】
事件
选择器
对话框
***项目问题***********************************************************
1、全局变量和局部变量?
2、对象的封装和继承?
3、js如何让外部文件按需载入?
document.write("<p>Big: " + txt.big() + "</p>")
4、隐式变量?
msg、url、l(代码行)
显示时间