《JavaScript基础知识点归纳 .docx》由会员分享,可在线阅读,更多相关《JavaScript基础知识点归纳 .docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结JavaScript基础学问点归纳 举荐 定义在函数外的变量肯定是全局变量。定义在函数内的变量,假如声明白var ,那该变量就是局部变量,假如不声明 var ,那么该变量就是全局变量。1、全局变量与局部变量JavaScriptvar global = Global; test ;function test var local = Local; document.writelnglobal; document.writelnlocal;document.writelnglobal; document.writelnlocal; 2、两种类型的Cookiei )长久性 cookie
2、 ,会被储备到客户端的硬盘上。ii )回话 cookie :不会被储备到客户端的硬盘上,而是放在浏览器进程所处的内存当中,当浏览器关闭时就该回话cookie就销毁了。3、在 JavaScript中,函数( function)就是对象4、在 JavaScript中,没有方法(函数)重载的概念可编辑资料 - - - 欢迎下载精品名师归纳总结5、Function对象在 JavaScript 中有一个 Function 对象,全部自定义的函数都是 Function 对象类型的。 Function 对象接受的全部参数都是字符串类型的,其中最终一个参数就是要执行的函数体,而前面的参数就是函数真正需要接受的
3、参数。6、隐含的对象arguments在 JavaScript中,每个函数都有一个隐含的对象arguments ,表示给函数实际传递的参数。arguments.length 就表示实际传递的参数的个数。7、函数名 .length每一个函数对象都有一个length属性,表示该函数期望 接 受 的 参 数 个 数 。 它 与 函 数 的 arguments不 同 。arguments.length表示函数实际接受的参数个数。8、JavaScript中有五种原始数据类型Undefined 、Null 、Boolean 、Number 以及 String。(留意:在 JavaScript中,没有 ch
4、ar 数据类型)Undefined数据类型的值只有一个:undefined。Null数据类型的值只有一个:null 。Boolean 数据类型的值有两个: true和 false。9、typeof运算符typeof是一元运算符, 后跟变量的名称, 用于猎取变量的数据类型, 其返回值有 5 个:undefined 、boolean 、number、可编辑资料 - - - 欢迎下载精品名师归纳总结string以及 object。10、在 JavaScript中,假如函数没有声明返回值,那么会返回 undefined11 、null与 undefined的关系undefined实际上是从 null派
5、生出来的。例如:null与 undefined的关系JavaScript alertundefined = null;/ 浏览器返回 true11、强制类型转换在 JavaScript中 有 3种 强 制 类 型 转 换 : Boolean( value ), Number( value ), String( value )。12、Object对象在 JavaScript中,全部对象都是从Object对象继承过来的。Object对象JavaScriptvar object = new Object ; forvar v in objectalertv;上面的代码中,浏览器并没有打印出什么,并不
6、能说明Object对象不带有任何属性。下面代码测试Object对象中可编辑资料 - - - 欢迎下载精品名师归纳总结的属性是否可以枚举, 假如返回 false ,就说明 Object对象中的属性是不能枚举的。Object对象中的属性是不能枚举的JavaScript alertobject.propertyIsEnumerableprototype;浏览器弹出false对话框,就说明Object对象中的属性是不能枚举的。接下来我们再看看window 对象中的属性是否可以枚举的window 对象中的属性是可以枚举的JavaScriptfor var v in window console.logv
7、;在 Chrome 浏览器中我们会看到浏览器调试掌握台中打印出一大堆属性,说明window 对象中的属性是可以枚举的。13、在 JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性动态添加 / 删除对象的属性JavaScriptvar object = new Object ; alertobject.username;/undefined可编辑资料 - - - 欢迎下载精品名师归纳总结object.username = zhangsan; alertobject.username;/zhangsan objectpassword = 123; alertobject.pa
8、ssword;/123delete object.username;/此时, username 属性已经被删除alertobject.username;14、JavaScript中定义对象最常见的方式定义对象最常见的方式JavaScript var object = username:zhangsan, password:12345;alertobject.username; alertobject.password; 15、数组数组定义JavaScript/ 方法一var array = new Array ; array.push1;可编辑资料 - - - 欢迎下载精品名师归纳总结arra
9、y.push2; array.push3; alertarray.length;/ 方法二(举荐)var array = 1,25,4; array.sort ; alertarray;调用数组的 sort ()方法,浏览器打印1, 25, 4,这并不是我们期望的结果。对于 JavaScript 数组的 sort 方法来说,它会先将待排序的内容转换为字符串(调用 toString 方法),根据字符串的先后次序进行排序。以下方式可以得到我们期望的结果(按数组大小进行排序):数组排序JavaScriptfunction parenum1,num2 var temp1 = parseIntnum1;
10、 var temp2 = parseIntnum2;if temp1return -1; else if temp1 = temp2 return 0;可编辑资料 - - - 欢迎下载精品名师归纳总结 else return 1;var array = 1,25,3; array.sortpare; alertarray;我们再用匿名函数的方式实现:匿名函数排序JavaScriptvar array = 1,25,3; array.sortfunctionnum1,num2var temp1 = parseIntnum1;var temp2 = parseIntnum2;if temp1ret
11、urn -1; else iftemp1 = temp2 return 0; else return 1;alertarray;可编辑资料 - - - 欢迎下载精品名师归纳总结16、JavaScript中定义对象的5 种方式( JavaScript 中没有类的概念,只有对象)i )基于已有对象扩充其属性和方法基于已有对象扩充其属性和方法JavaScriptvar object = new Object ;/ 添加 name属性object.name = zhangsan;/ 添加 sayName方法object.sayName = functionname this.name = name;
12、alertthis.name;object.sayNamekyle;/调用 sayName 方法, name属性被修改为 kyle ,浏览器将打印 kyle最简洁的一种方式,使用起来并不便利,适合于暂时需要一个对象。ii )工厂方式创建对象不带参数的工厂方法:JavaScript/ 工厂方法function createObject 可编辑资料 - - - 欢迎下载精品名师归纳总结var object = new Object ;/创建一个对象object.name = zhangsan;/为该对象添加一个name属性object.password = 123;/为该对象添加一个passwor
13、d 属性object.get= function /为该对象添加一个 get方法alertthis.name+,+this.password;return object;/返回该对象var object1 = createObject ;/调用 createObject工厂方法创建对象 object1var object2 = createObject ;/调用 createObject工厂方法创建对象 object2object1.get ;/ 调用对象 get 方法object2.get ;/ 调用对象 get 方法带参数的工厂方法:JavaScriptfunction createObj
14、ectname,password var object = new Object ; object.name = name;可编辑资料 - - - 欢迎下载精品名师归纳总结object.password = password; object.get = function alertthis.name+,+this.password;return object;var object1 = createObjectzhangsan,123; var object2 = createObjectlisi,456; object1.get ;object2.get ;上面两种不带参数和带参数的工厂方法
15、缺点:每创建一个对象,内存中就创建一个get 方法,比较铺张内存,且影响性能。而我们的期望是,创建两个不同的对象,它们的属性是不一样的,但方法是共用的。所以接下来我们需要改进 createObject工厂方法。改进的工厂方法:JavaScript function get alertthis.name+,+this.password;function createObjectname,password var object = new Object ;可编辑资料 - - - 欢迎下载精品名师归纳总结object.name = name; object.password = password;
16、object.get = get;return object;var object1 = createObjectzhangsan,123; var object2 = createObjectlisi,456; object1.get ;object2.get ;将 get方法定义在 createObject函数外面,这样每创建一个对象, get方法都是共用的。让一个函数对象被多 个对象所共享,而不是每一个对象都拥有一个函数对象。iii )构造函数方式创建对象不带参数的构造函数: JavaScriptfunction Person /在执行行代码前, js引擎会为我们生成一个对象this.n
17、ame = zhangsan; this.password = 123; this.getInfo = function alertthis.name+,+this.password;可编辑资料 - - - 欢迎下载精品名师归纳总结/此处有一个隐含的 return语句,用于将之前生成的对象返回(也是跟工厂方式不一样的的方)var p1 = new Person ; p1.getInfo ;带参数的构造函数JavaScriptfunction Personname,password this.name = name; this.password = password; this.getInfo
18、= function alertthis.name+,+this.password;var p1 = new Personzhangsan,123; var p2 = new Personlisi,456; p1.getInfo ;p2.getInfo ;iv )原型( prototype)方式创建对象prototype是 Object对象里面的一个属性prototypeJavaScript可编辑资料 - - - 欢迎下载精品名师归纳总结function Person Person.prototype.name = zhangsan; Person.prototype.password = 1
19、23; Person.prototype.getInfo = function alertthis.name+,+this.password;var p1 = new Person ; var p2 = new Person ;p1.name = kyle;/对象生成之后再去转变属性p1.getInfo ; p2.getInfo ;单纯的使用原型方式有两个问题:,你无法在构造函数中为属性赋初值,只能在对象生成之后再去转变属性值。prototype JavaScript function Person Person.prototype.name = new Array ; Person.prot
20、otype.password = 123; Person.prototype.getInfo = function alertthis.name+,+this.password;可编辑资料 - - - 欢迎下载精品名师归纳总结;var p1 = new Person ; var p2 = new Person ;p1.name.pushzhangsan; p1.name.pushlisi; p1.password = 456; p1.getInfo ;p2.getInfo浏览器将会打印: zhangsan , lisi, 456 和 zhangsan ,lisi, 123.假如使用原型方式创建
21、对象,那么生成的全部对象会共享原型中的属性,这样一个对象转变了该属性也会反应到其他对象当中。所以单纯的使用原型方式是不行的,仍需要结合其他方式。接下来我们会连续介绍。使用原型 +构造函数方式来定义对象JavaScriptfunction Person this.name = new Array ; this.password = 123;Person.prototype.getInfo = function alertthis.name+,+this.password;可编辑资料 - - - 欢迎下载精品名师归纳总结;var p1 = new Person ; var p2 = new Per
22、son ;p1.name.pushzhangsan; p2.name.pushlisi; p1.getInfo ;p2.getInfo ;使用原型 +构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法,这是一种比较好的方式。v)动态原型方式JavaScript function Person this.name = zhangsan; this.password = 123;iftypeof Person.flag = undefinedalertinvoked; Person.prototype.getInfo = function alertthis.name + ,
23、 + this.password;Person.flag = true;可编辑资料 - - - 欢迎下载精品名师归纳总结var p1 = new Person ; var p2 = new Person ; p1.getInfo ;p2.getInfo ;在动态原型方式中,在构造函数中通过标志量让全部对象共享一个方法,而每个对象拥有自己的属性。上面代码在次创建对象时,第一通过一个判定语句,看 flag 属性是否已经定义, 如没有定义, 就通过原型方式添加 getInfo 方法, 然后将 flag 设置为 true ,那么当其次次创建对象时, if 语句判定为假,跳过执行。这样就达到了我们所期望
24、的结果,创建的对象属性是互不干扰的,而对象的方法是共享的。17、JavaScript中对象的继承( 5 种方式) 种方式 : 对象冒充冒充对象继承JavaScript/ 父类function Parentusername this.username = username; this.sayHello = function alertthis.username;可编辑资料 - - - 欢迎下载精品名师归纳总结/ 子类function Childusername,password/下面三行代码是最关键的this.method = Parent; this.methodusername; delet
25、e this.method; this.password = password; this.sayWorld = function alertthis.password;var p = new Parentzhangsan; var c = new Childlisi,123; p.sayHello ;c.sayHello ; c.sayWorld其次种方式 :call继承的其次种实现方式,call方法方式, call方法是Function对象中定义的方法, 因此我们定义的每个函数都拥有该方法。 call方法的个参数会被传递给函数中的this, 从第 2 个参数开头,逐一赋给函数中的参数。可编
26、辑资料 - - - 欢迎下载精品名师归纳总结call继承父类JavaScript function teststr alertthis.name+,+str;可编辑资料 - - - 欢迎下载精品名师归纳总结thisvar object = new Object ; object.name = zhangsan;/test.call相当于调用了 test函数test.callobject,html5war;/将 object赋给了接下来我们用call方式实现对象的继承JavaScript/ 父类function Parentusername this.username = username; t
27、his.sayHello = function alertthis.username;可编辑资料 - - - 欢迎下载精品名师归纳总结;/ 子类function Childusername,password Parent.callthis,username;可编辑资料 - - - 欢迎下载精品名师归纳总结this.password = password; this.sayWorld = function alertthis.password;var p = new Parentzhangsan; var c = new Childlisi,123; p.sayHello ;c.sayHello
28、 ; c.sayWorld ;第三种方式 :applyapply继承父类JavaScript/ 父类function Parentusername this.username = username; this.sayHello = function alertthis.username;/ 子类function Childusername,password可编辑资料 - - - 欢迎下载精品名师归纳总结Parent.applythis,new Arrayusername; this.password = password; this.sayWorld = function alertthis.
29、password;var p = new Parentzhangsan; var c = new Childlisi,123; p.sayHello ;c.sayHello ; c.sayWorld ;apply方法与 call方法很类似, apply方法也是定义在Function对象中的方法, 因此我们定义的每个函数都拥有该方法。apply方 法 与 call方 法 有 一 个 区 别 : Parent.applythis,new Arrayusername;传递的其次个参数为一个数组,而call方法传递的是一些离散的数据参 数。这两个方法并不能说谁好谁坏,要看详细使用场景。第四种方式 :
30、原型链方式(无法给构造函数传递参数)原型链继承JavaScript function Parent 可编辑资料 - - - 欢迎下载精品名师归纳总结Parent.prototype.hello = hello; Parent.prototype.sayHello = function alertthis.hello;function ChildChild.prototype = new Parent ; Child.prototype.world = world; Child.prototype.sayWorld = function alertthis.world;var c = new C
31、hild ; c.sayHello ; c.sayWorld ;单纯使用原型链方式的缺点:没有方法传递参数,只有等对象创建完之后再去修改。我们接下来结合其它的方式解决这个问题。第五种方式 : 混合方式 举荐 使用混合方式实现对象的继承JavaScriptfunction Parenthello 可编辑资料 - - - 欢迎下载精品名师归纳总结this.hello = hello;Parent.prototype.sayHello = function alertthis.hello;function Childhello,world Parent.callthis,hello; this.world = world;Child.prototype = new Parent ; Child.prototype.sayWorld = function alertthis.world;var c = new Childhello,world; c.sayHello ;c.sayWorld ;以上这篇 JavaScript基础学问点归纳 举荐 就是共享给大家的全部内容了,期望能给大家一个参考可编辑资料 - - - 欢迎下载
限制150内