2022年基础知识点归纳_第1页
2022年基础知识点归纳_第2页
2022年基础知识点归纳_第3页
2022年基础知识点归纳_第4页
2022年基础知识点归纳_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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,会被存储到客户

2、端的硬盘上。ii)回话cookie:不会被存储到客户端的硬盘上,而是放在浏览器进程所处的内存当中,当浏览器关闭时则该回话cookie就销毁了。3、在JavaScript中,函数(function)就是对象4、在JavaScript中,没有方法(函数)重载的概念5、Function对象在JavaScript中有一个Function对象,所有自定义的函数都是Function对象类型的。Function对象接受的所有参数都是字符串类型的,其中最后一个参数就是要执行的函数体,而前面的参数则是函数真正需要接受的参数。6、隐含的对象arguments在JavaScript中,每个函数都有一个隐含的对象ar

3、guments,表示给函数实际传递的参数。arguments.length就表示实际传递的参数的个数。7、函数名.length每一个函数对象都有一个length属性,表示该函数期望接受的参数个数。它与函数的arguments不同。arguments.length表示函数实际接受的参数个数。8、JavaScript中有五种原始数据类型Undefined、Null、Boolean、Number以及String。(注意:在JavaScript中,没有char数据类型)Undefined数据类型的值只有一个:undefined;Null数据类型的值只有一个:null;Boolean数据类型的值有两个:

4、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),N

5、umber(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(pertyIsEnumera

6、ble(prototype);浏览器弹出false对话框,则说明Object对象中的属性是不能枚举的。接下来我们再看看window对象中的属性是否可以枚举的window对象中的属性是可以枚举的JavaScriptfor (var v in window) console.log(v);在Chrome浏览器中我们会看到浏览器调试控制台中打印出一大堆属性,说明window对象中的属性是可以枚举的。13、在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性动态添加/删除对象的属性JavaScriptvar object = new Object ;alert(object.us

7、ername);/undefinedobject.username = zhangsan;alert(object.username);/zhangsanobjectpassword = 123;alert(object.password);/123delete object.username;/此时,username属性已经被删除alert(object.username);14、JavaScript中定义对象最常见的方式定义对象最常见的方式JavaScriptvar object = username:zhangsan, password:12345;alert(object.userna

8、me);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 方法),按照字符串的先后顺序进行排序。下列方式

9、可以得到我们期望的结果(按数组大小进行排序):数组排序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(fun

10、ction(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

11、;/添加sayName方法object.sayName = function(name) = name; alert();object.sayName(kyle);/调用sayName方法,name属性被修改为kyle,浏览器将打印kyle最简单的一种方式,使用起来并不方便,适合于临时需要一个对象。ii)工厂方式创建对象不带参数的工厂方法:JavaScript/工厂方法function createObject var object = new Object ;/创建一个对象 = zhangsan;/为该对象添加一个name属性 o

12、bject.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方法带参数的

13、工厂方法: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

14、 ;上面两种不带参数和带参数的工厂方法缺点:每创建一个对象,内存中就创建一个get方法,比较浪费内存,且影响性能。而我们的期望是,创建两个不同的对象,它们的属性是不一样的,但方法是共用的。所以接下来我们需要改进createObject工厂方法。改进的工厂方法:JavaScriptfunction get alert(+,+this.password);function createObject(name,password) var object = new Object ; = name; object.password = password; obj

15、ect.get = get; return object;var object1 = createObject(zhangsan,123);var object2 = createObject(lisi,456);object1.get ;object2.get ;将get方法定义在createObject函数外面,这样每创建一个对象,get方法都是共用的。让一个函数对象被多个对象所共享,而不是每一个对象都拥有一个函数对象。iii)构造函数方式创建对象不带参数的构造函数:JavaScriptfunction Person /在执行行代码前,js引擎会为我们生成一个对象 =

16、zhangsan; this.password = 123; this.getInfo = function alert(+,+this.password); ; /此处有一个隐含的return语句,用于将之前生成的对象返回(也是跟工厂方式不一样的地方)var p1 = new Person ;p1.getInfo ;带参数的构造函数JavaScriptfunction Person(name,password) = name; this.password = password; this.getInfo = function alert(this.nam

17、e+,+this.password); ;var p1 = new Person(zhangsan,123);var p2 = new Person(lisi,456);p1.getInfo ;p2.getInfo ;iv)原型(prototype)方式创建对象prototype是Object对象里面的一个属性prototypeJavaScriptfunction Person P = zhangsan;Ptotype.password = 123;Ptotype.getInfo = function alert(th

18、+,+this.password);var p1 = new Person ;var p2 = new Person ; = kyle;/对象生成之后再去改变属性p1.getInfo ;p2.getInfo ;单纯地使用原型方式有两个问题:,你无法在构造函数中为属性赋初值,只能在对象生成之后再去改变属性值。prototypeJavaScriptfunction Person P = new Array ;Ptotype.password = 123;Ptotype.getInfo = fun

19、ction alert(+,+this.password);var p1 = new Person ;var p2 = new Person ;.push(zhangsan);.push(lisi);p1.password = 456;p1.getInfo ;p2.getInfo浏览器将会打印:zhangsan,lisi,456 和 zhangsan,lisi,123.如果使用原型方式创建对象,那么生成的所有对象会共享原型中的属性,这样一个对象改变了该属性也会反应到其他对象当中。所以单纯地使用原型方式是不行的,还需要结合其他方式。接下来我们会继续介

20、绍。使用原型+构造函数方式来定义对象JavaScriptfunction Person = new Array ; this.password = 123;Ptotype.getInfo = function alert(+,+this.password);var p1 = new Person ;var p2 = new Person ;.push(zhangsan);.push(lisi);p1.getInfo ;p2.getInfo ;使用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共

21、享同一个方法,这是一种比较好的方式。v)动态原型方式JavaScriptfunction Person = zhangsan; this.password = 123; if(typeof Person.flag = undefined) alert(invoked); Ptotype.getInfo = function alert( + , + this.password); Person.flag = true; var p1 = new Person ;var p2 = new Person ;p1.getInfo ;p2.get

22、Info ;在动态原型方式中,在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。上面代码在次创建对象时,首先通过一个判断语句,看flag属性是否已经定义,若没有定义,则通过原型方式添加getInfo方法,然后将flag设置为true,那么当第二次创建对象时,if语句判断为假,跳过执行。这样就达到了我们所期望的结果,创建的对象属性是互不干扰的,而对象的方法是共享的。17、JavaScript中对象的继承(5种方式)种方式:对象冒充冒充对象继承JavaScript/父类function Parent(username) this.username = username; th

23、is.sayHello = function alert(this.username); ;/子类function Child(username,password) /下面三行代码是最关键的 this.method = Parent; this.method(username); delete this.method; this.password = password; this.sayWorld = function alert(this.password); ;var p = new Parent(zhangsan);var c = new Child(lisi,123);p.sayHel

24、lo ;c.sayHello ;c.sayWorld第二种方式:call继承的第二种实现方式,call方法方式,call方法是Function对象中定义的方法,因此我们定义的每个函数都拥有该方法。call方法的个参数会被传递给函数中的this,从第2个参数开始,逐一赋给函数中的参数。call 继承父类JavaScriptfunction test(str) alert(+,+str);var object = new Object ; = zhangsan;/test.call相当于调用了test函数test.call(object,html5war);

25、/将object赋给了this接下来我们用call方式实现对象的继承JavaScript/父类function Parent(username) this.username = username; this.sayHello = function alert(this.username); ;/子类function Child(username,password) Parent.call(this,username); this.password = password; this.sayWorld = function alert(this.password); ;var p = new Pa

26、rent(zhangsan);var c = new Child(lisi,123);p.sayHello ;c.sayHello ;c.sayWorld ;第三种方式:applyapply 继承父类JavaScript/父类function Parent(username) this.username = username; this.sayHello = function alert(this.username); ;/子类function Child(username,password) Parent.apply(this,new Array(username); this.password = password; this.sayWorld = function alert(this.password); ;var p = new Parent(zhangsan);var c = new Child(lisi,123);p.sayHello ;c.sayHello ;c.sayWorld ;apply方法与call方法很类似,apply方法也是定义在Function对象中的方法,因此我们定义的每

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论