JavaScript基础知识点归纳(推荐)定义在函数外的变量一定是全局变量;定义在函数内的变量,如果声明了var,那该变量就是局部变量,如果不声明var,那么该变量就是全局变量。
1、全局变量与局部变量JavaScriptvar global = "Global";test ;function test {var local = "Local";document.writeln(global);document.writeln(local);}document.writeln(global);document.writeln(local);2、两种类型的Cookiei)持久性cookie,会被存储到客户端的硬盘上。
ii)回话cookie:不会被存储到客户端的硬盘上,而是放在浏览器进程所处的内存当中,当浏览器关闭时则该回话cookie就销毁了。
3、在JavaScript中,函数(function)就是对象4、在JavaScript中,没有方法(函数)重载的概念5、Function对象在JavaScript中有一个Function对象,所有自定义的函数都是Function对象类型的。
Function对象接受的所有参数都是字符串类型的,其中最后一个参数就是要执行的函数体,而前面的参数则是函数真正需要接受的参数。
6、隐含的对象arguments在JavaScript中,每个函数都有一个隐含的对象arguments,表示给函数实际传递的参数。
arguments.length 就表示实际传递的参数的个数。
7、函数名.length每一个函数对象都有一个length属性,表示该函数期望接受的参数个数。
它与函数的arguments不同。
arguments.length表示函数实际接受的参数个数。
8、JavaScript中有五种原始数据类型Undefined、Null、Boolean、Number以及String。
(注意:在JavaScript中,没有char数据类型)Undefined数据类型的值只有一个:undefined;Null数据类型的值只有一个:null;Boolean数据类型的值有两个:true和false;9、typeof运算符typeof是一元运算符,后跟变量的名称,用于获取变量的数据类型,其返回值有5个:undefined、boolean、number、string以及object。
10、在JavaScript中,如果函数没有声明返回值,那么会返回undefined11、null与undefined的关系undefined实际上是从null派生出来的。
例如:null与undefined的关系JavaScriptalert(undefined == null);//浏览器返回true11、强制类型转换在JavaScript中有3种强制类型转换:Boolean (value),Number(value),String(value)。
12、Object对象在JavaScript中,所有对象都是从Object对象继承过来的。
Object对象JavaScriptvar object = new Object ;for(var v in object){alert(v);}上面的代码中,浏览器并没有打印出什么,并不能说明Object对象不带有任何属性。
下面代码测试Object对象中的属性是否可以枚举,如果返回false,则说明Object对象中的属性是不能枚举的。
Object对象中的属性是不能枚举的JavaScriptalert(object.propertyIsEnumerable("prototype"));浏览器弹出false对话框,则说明Object对象中的属性是不能枚举的。
接下来我们再看看window对象中的属性是否可以枚举的window对象中的属性是可以枚举的JavaScriptfor (var v in window) {console.log(v);}在Chrome浏览器中我们会看到浏览器调试控制台中打印出一大堆属性,说明window对象中的属性是可以枚举的。
13、在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性动态添加/删除对象的属性JavaScriptvar object = new Object ;alert(ername);//undefinedername = "zhangsan";alert(ername);//zhangsanobject["password"] = "123";alert(object.password);//123delete ername;//此时,username属性已经被删除alert(ername);14、JavaScript中定义对象最常见的方式定义对象最常见的方式JavaScriptvar object = {username:"zhangsan",password:12345};alert(ername);alert(object.password);15、数组数组定义JavaScript//方法一var array = new Array ;array.push(1);array.push(2);array.push(3);alert(array.length);//方法二(推荐)var array = [1,25,4];array.sort ;alert(array);调用数组的sort()方法,浏览器打印1,25,4,这并不是我们期望的结果。
对于JavaScript数组的sort方法来说,它会先将待排序的内容转换为字符串(调用toString 方法),按照字符串的先后顺序进行排序。
下列方式可以得到我们期望的结果(按数组大小进行排序):数组排序JavaScriptfunction pare(num1,num2) {var temp1 = parseInt(num1);var temp2 = parseInt(num2);if (temp1 return -1;} else if (temp1 == temp2) {return 0;} else {return 1;}}var array = [1,25,3];array.sort(pare);alert(array);我们再用匿名函数的方式实现:匿名函数排序JavaScriptvar array = [1,25,3];array.sort(function(num1,num2){ var temp1 = parseInt(num1);var temp2 = parseInt(num2);if (temp1 return -1; } else if(temp1 == temp2) { return 0;} else {return 1;}});alert(array);16、JavaScript中定义对象的5种方式(JavaScript 中没有类的概念,只有对象)i)基于已有对象扩充其属性和方法基于已有对象扩充其属性和方法JavaScriptvar object = new Object ;//添加name属性 = "zhangsan";//添加sayName方法object.sayName = function(name) { = name;alert();};object.sayName("kyle");//调用sayName方法,name 属性被修改为kyle,浏览器将打印kyle最简单的一种方式,使用起来并不方便,适合于临时需要一个对象。
ii)工厂方式创建对象不带参数的工厂方法:JavaScript//工厂方法function createObject {var object = new Object ;//创建一个对象 = "zhangsan";//为该对象添加一个name属性object.password = "123";//为该对象添加一个password属性object.get = function {//为该对象添加一个get 方法alert(+","+this.password);};return object;//返回该对象}var object1 = createObject ;//调用createObject 工厂方法创建对象object1var object2 = createObject ;//调用createObject 工厂方法创建对象object2object1.get ;//调用对象get方法object2.get ;//调用对象get方法带参数的工厂方法:JavaScriptfunction createObject(name,password) {var object = new Object ; = name;object.password = password;object.get = function {alert(+","+this.password);};return object;}var object1 = createObject("zhangsan","123");var object2 = createObject("lisi","456");object1.get ;object2.get ;上面两种不带参数和带参数的工厂方法缺点:每创建一个对象,内存中就创建一个get方法,比较浪费内存,且影响性能。
而我们的期望是,创建两个不同的对象,它们的属性是不一样的,但方法是共用的。
所以接下来我们需要改进createObject工厂方法。
改进的工厂方法:JavaScriptfunction get {alert(+","+this.password);}function createObject(name,password) {var object = new Object ; = name;object.password = password;object.get = get;return object;}var object1 = createObject("zhangsan","123");var object2 = createObject("lisi","456");object1.get ;object2.get ;将get方法定义在createObject函数外面,这样每创建一个对象,get方法都是共用的。