还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
基础学问点归纳举荐JavaScr ipt定义在函数外的变量确定是全局变量;定义在函数内的变量,假如声明白var,那该变量就是局部变量,假如不声明van那么该变量就是全局变量
1、全局变量与局部变量JavaScriptvar global=Global”;test;function test{var local=Local”;document,writeinglobal;document,writein local;}document,writeinglobal;document,writeinlocal;2>两种类型的Cookiei许久性cookie,会被存储到客户端的硬盘上ii回话cookie不会被存储到客户端的硬盘上,而是放在阅读器进程所处的内存当中,当阅读器关闭时则该回话cookie就销毁了
3、在JavaScript中,函数function就是对象object,password=password;object.get=function{alertthis.name+〃,〃+this.password;;return object;}var objectl=createObject〃zhangsan〃,〃123〃;var object2=createObject〃lisi〃,〃456〃;objectl.get;object
2.get;上面两种不带参数和带参数的工厂方法缺点每创建一个对象,内存中就创建一个get方法,比较奢侈内存,且影响性能而我们的期望是,创建两个不同的对象,它们的属性是不一样的,但方法是共用的所以接下来我们须要改进createObject工厂方法改进的工厂方法JavaScriptfunction get{alert this.name+〃,〃+this.password;function createObjectname,password{var object=new Object;object,name=name;object,password=password;object,get=get;return object;var objectl=createObject〃zhangsan〃,〃123〃;var object2=createObject〃lisi〃,〃456〃;objectl.get;object
2.get;将get方法定义在createObject函数外面,这样每创建一个对象,get方法都是共用的让一个函数对象被多个对象所共享,而不是每一个对象都拥有一个函数对象iii构造函数方式创建对象不带参数的构造函数JavaScriptfunction Person{〃在执行行代码前,js引擎会为我们生成一个对象this,name=〃zhangsan〃;this,password=〃123〃;this.getlnfo=function{alert this.name+〃,〃+this password;・〃此处有一个隐含的return语句,用于将之前生成的对象返回也是跟工厂方式不一样的地方var pl=new Person;pl.getlnfo;带参数的构造函数JavaScriptfunction Personname,password{this,name=name;this,password=password;this.getlnfo=function{alertthis.name+〃,〃+this password;・;}var pl=new Person〃zhangsan〃,〃123〃;var p2=new Personlisi〃,〃456〃;pl.getlnfo;p
2.getlnfo;iv原型prototype方式创建对象prototype是Object对象里面的一个属性prototypefunction Person{Person,prototype,name=〃zhangsan〃;Person,prototype,password=〃123〃;Person,prototype.getlnfo=function{alert this.name+〃,〃+this.password;};var pl=new Person;var p2=new Person;P
1.name二〃kyle〃;〃对象生成之后再去变更属性pl.getlnfo;p
2.getlnfo;单纯地运用原型方式有两个问题,你无法在构造函数中为属性赋初值,只能在对象生成之后再去变更属性值prototypeJavaScriptfunction Person{Person,prototype,name=new Array;Person,prototype,password=〃123〃;Person.prototype.getlnfo=function{alert this.name+〃,〃+this.password;;var pl=new Person;var p2=new Person;pl.name,push〃zhangsan〃;pl.name.push〃lisi〃;pl.password=〃456〃;pl.getlnfo;p
2.getlnfo阅读器将会打印zhangsan,lisi,456和zhangsan,lisi,
123.假如运用原型方式创建对象,那么生成的全部对象会共享原型中的属性,这样一个对象变更了该属性也会反应到其他对象当中所以单纯地运用原型方式是不行的,还须要结合其他方式接下来我们会接着介绍运用原型+构造函数方式来定义对象JavaScriptfunction Person{this,name=new Array;this,password=〃123〃;Person,prototype,getlnfo=function{alert this.name+〃,〃+this.password;var pl=new Personvar p2=new Personpl.name,push〃zhangsan〃;p
2.name.push〃lisi〃;pl.getlnfo p
2.getlnfo;运用原型+构造函数方式来定义对象,对象之间的属性互不干扰,各个对象间共享同一个方法,这是一种比较好的方式V)动态原型方式JavaScriptfunction Person{this,name=〃zhangsan〃;this,password=〃123〃;iftypeof Person,flag==undefined{alertinvoked;Person.prototype.getlnfo=function{alertthis,name+〃,〃+this,password;Person,flag=true;var pl=new Person;var p2=new Person;pl.getlnfo;p
2.getlnfo;在动态原型方式中,在构造函数中通过标记量让全部对象共享一个方法,而每个对象拥有自己的属性上面代码在次创建对象时,首先通过一个推断语句,看flag属性是否已经定义,若没有定义,则通过原型方式添加getlnfo方法,然后将flag设置为true,那么当其次次创建对象时,if语句推断为假,跳过执行这样就达到了我们所期望的结果,创建的对象属性是互不干扰的,而对象的方法是共享的
17、JavaScript中对象的继承5种方式种方式:对象冒充冒充对象继承JavaScript〃父类function Parentusername{this,username=username;this.sayHello=function{alertthis,username;//子类function Childusername,password{//下面三行代码是最关键的this,method=Parent;this,methodusername;delete this,method;this,password=password;this.sayWorld=function{alertthis,password;var p=new Parent〃zhangsan〃;var c=new Child〃lisi〃,〃123〃;p.sayHello c.sayHello;c.sayWorld其次种方式:call继承的其次种实现方式,call方法方式,call方法是Function对象中定义的方法,因此我们定义的每个函数都拥有该方法call方法的个参数会被传递给函数中的this,从第2个参数起先,逐一赋给函数中的参数call继承父类JavaScriptfunction teststr{alertthis.name+〃,〃+str;var object=new Object;object,name=〃zhangsan〃;//test,call相当于调用了test函数test,call object,〃html5war〃;〃将object赋给了this接下来我们用call方式实现对象的继承JavaScript〃父类function Parentusername{this,username=username;this.sayHello=function alertthis,username;;}//子类function Childusername,password{Parent,callthis,username;this,password=password;this.sayWorld=function{alert this,password;;var p=new Parent〃zhangsan〃;var c=new Child〃lisi〃,〃123〃;p.sayHello;q.sayHello;r.sayWorld;第三种方式applyapply继承父类JavaScript〃父类function Parentusername{this,username=username;this.sayHello=function{alertthis,username;;}〃子类function Childusername,password{
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、Parent,apply this,new Arrayusername;this,password=password;this.sayWorld=function{alertthis,password;;}var p=new Parent〃zhangsan〃;var c=new Child〃lisi〃,〃123〃;p.sayHello;c.sayHello;c.sayWorld;apply方法与call方法很类似,apply方法也是定义在Function对象中的方法,因此我们定义的每个函数都拥有该方法apply方法与call方法有一个区分Parent,apply this,new Arrayusername;传递的其次个参数为一个数组,而call方法传递的是一些离散的数据参数这两个方法并不能说谁好谁坏,要看具体运用场景第四种方式:原型链方式无法给构造函数传递参数原型链继承JavaScriptfunction Parent{Parent,prototype,hello=hello”;Parent,prototype.sayHello=function{alertthis,hello;;function Child{}Child.prototype=new Parent;Child,prototype,world=world”;Child,prototype.sayWorld=function{alertthis,world;;var c=new Child;c.sayHello;c.sayWorld;单纯运用原型链方式的缺点没有方法传递参数,只有等对象创建完之后再去修改我们接下来结合其它的方式解决这个问题第五种方式:混合方式举荐运用混合方式实现对象的继承JavaScriptfunction Parenthello{this,hello=hello;Parent,prototype.sayHello=function{alert this,hello;function Childhello,world{Parent,callthis,hello;this,world=world;}Child.prototype=new Parent;Child,prototype.sayWorld=function{alertthis,world;var c=new Child〃hello〃,“world;c.sayHello;c.sayWorld;以上这篇JavaScript基础学问点归纳举荐就是共享给大家的全部内容了,希望能给大家一个参考string以及objecto
10、在JavaScript中,假如函数没有声明返回值,那么会返回undefinedll null与undefined的关系undefined事实上是从null派生出来的例如null与undefined的关系JavaScriptalert undefined==null;〃阅读器返回true
11、强制类型转换在JavaScript中有3种强制类型转换Booleanvalue,Number value,String value
012、Object对象在JavaScript中,全部对象都是从Object对象继承过来的Object对象JavaScriptvar object=new Object;forvar v in object{alert v;上面的代码中,阅读器并没有打印出什么,并不能说明Object对象不带有任何属性下面代码测试Object对象中的属性是否可以枚举,假如返回false,则说明Object对象中的属性是不能枚举的Object对象中的属性是不能枚举的JavaScriptalert object.propertylsEnumerable/zprototypez/;阅读器弹出false对话框,则说明Object对象中的属性是不能枚举的接下来我们再看看window对象中的属性是否可以枚举的window对象中的属性是可以枚举的JavaScriptfor varvinwindow{console,logv;}在Chrome阅读器中我们会看到阅读器调试限制台中打印出一大堆属性,说明window对象中的属性是可以枚举的
13、在JavaScript中,可以动态添加对象的属性,也可以动态删除对象的属性动态添加/删除对象的属性JavaScriptvar object=new Object;alertobject,username;//undefined object,username=〃zhangsan〃;alert object,username;//zhangsanobject[password〃]=〃123〃;alertobject,password;//123delete object,username;//止匕时,username属性已经被删除alertobject,username;
14、JavaScript中定义对象最常见的方式定义对象最常见的方式JavaScriptvar object={username:zhangsan,password:12345;alert object,username;alert object,password;
15、数组数组定义JavaScript//方法一var array=new Array;array,push1;array,push2;array,push3;alert array,length;〃方法二举荐var array=[1,25,41;array,sort;alertarray;调用数组的sort方法,阅读器打印1,25,4,这并不是我们期望的结果对于JavaScript数组的sort方法来说,它会先将待排序的内容转换为字符串调用toString方法,依据字符串的先后依次进行排序下列方式可以得到我们期望的结果按数组大小进行排序数组排序JavaScriptfunction parenuml,num2{var tempi=parselntnuml;var temp2=parselntnum2;if tempireturn-1;}else if tempi==temp2{return0;}else{return1;}var array=[1,25,3];array,sortpare;alertarray;我们再用匿名函数的方式实现匿名函数排序JavaScriptvar array=[1,25,3];array,sortfunctionnuml,num2{var tempi=parselntnuml;var temp2=parselntnum2;iftempireturn-1;}else iftempi==temp2{return0;}else{return1;;alertarray;
16、JavaScript中定义对象的5种方式JavaScript中没有类的概念,只有对象i基于已有对象扩充其属性和方法基于已有对象扩充其属性和方法JavaScriptvar object=new Object;〃添加name属性object,name=〃zhangsan〃;〃添加sayName方法object.sayName=functionname{this,name=name;alert this,name;};object.sayName〃kyle〃;〃调用sayName方法,name属性被修改为kyle,阅读器将打印kyle最简洁的一种方式,运用起来并不便利,适合于临时须要一个对象ii工厂方式创建对象不带参数的工厂方法JavaScript〃工厂方法function createObject{var object=new Object;〃创建一个对象object,name=zhangsan”;〃为该对象添加一个name属性object,password=123〃;〃为该对象添加一个password属性object,get=function{〃为该对象添加一个get方法alertthis.name+〃,〃+this.password;;return object;〃返回该对象var objectl=createObject;〃调用createObject工厂方法创建对象objectlvar object2=createObject;〃调用createObject工厂方法创建对象object2objectl.get;〃调用对象get方法object
2.get;〃调用对象get方法带参数的工厂方法JavaScriptfunction createObjectname,password{var object=new Object;object,name=name;。