1 语言特性
动态性:在使用的时候做赋值操作
var o=new objecty();
obj.name="";obj.say=function(){ return ""} o.say();
弱类型
var
服务端的JS
NODE.JS:提供了丰富的API来简化服务器端的网络编程。
基础:
js只有三种基本类型,string number boolean typeof判断 instanceof进一步判断
对象类型
作用域 全局和局部 如果局部变量没有VAR 那就是全局
JS对象:借助JS的动态性,欻功能键一个空的对象,然后添加属性来完善对象的功能。
JSON:可以减少中间变量,是代码结构清晰,直观,动态的构件对象,而不必通过类来进行实例化。
原型对象:通过原型,可以建立继承。每个对象都有一个PROTOTYPE的属性,本身就是一个对象,所以它本身也有自己的原型,从而就构成了一个链结构。
this的值并非函数被声明而确定,而是被函数如何被调用而确定。
对象的声明有三种哦功能方式 new 原型 JSON
作用域链:一个函数中,作用域链会有两个对象,第一个为调用对象,第二个为全局对象。遍历链表,一直向上查找。
函数上下文:
函数内的this是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法。
函数也是一种对象,可以通过function 对象上的call和apply来修改函数的上下文。
call和apply:call后面要跟参数,隔开,而apply则跟参数组成的数组,this指针将会被替换为第一个参数。
函数可以:赋值给一个变量,被赋值为对象的属性,作为参数被传入别的函数,作为函数的结果被返回。
数组的方法:concat()连接多个数组 join()数组所有元素放入一个字符串中 pop()删除返回数组的最后一个元素 push()向数组末尾添加一个或更多元素
reverse()倒序 shift()删除并返回数组的第一个元素 slice()从某个已有的数组返回选定的元素 sort()对数组的元素进行排序 splice()删除元素,并添加新元素
unshift() 开头添加一个或更多元素,返回新的长度valueof()返回数组对象的原始值。
数组属性length length可变
JS中的正则表达式:元字符 ^ $ * + ? \b
范围及重复:[] [^] . \w所有字母 \W \s空白 \S \d数字 \D \b
var email=/^[\w-]+(\.[w-]+)*@[\w-]+(\.[\w-]+)+$/
[\w-]:所有字符,数字,下划线,减号 +表示这个集合至少重复一次 *至少重复零次或多次
使用正则:RegExp 对象的方法 test() exec() compile()
string中的方法 match :返回匹配数组 replace slpit search:查找,返回首次位置
JS闭包,理解好作用域,函数为独立的对象
简单概念:函数是对象,对象是属性的集合,而属性又可以是对象,在函数内定义函数成为理所当然,如果在函数func内部声明函数inner,然后在函数外部调用inner,这个过程即产生了一个闭包。
闭包可以做什么:模拟面向对象的代码风格,编码更优雅,提升执行效率。
1 匿名函数,外部无法引用它的内部的变量,不会污染全局对象。
2 缓存 闭包不会释放外部的引用,从而函数内部的值可以得以保留
3 实现封装
应注意问题
内存泄漏
上下文引用