javascript进阶学习笔记笔记

基础知识:
1) 函数的声明方式:普通的声明方式;
function myFun(m,n){ alert(m+n);}
使用变量初始化函数;
Var myFun =function (m,n){ alert(m+n);}
使用构造函数;
var myFun=new function(‘m’,’n’,’alert(m+n)’);
2)回调函数:将函数作为另一个函数的参数
//就是在一个函数里调用另一个函数之类的。
3)函数的内部属性:在函数的内部,有两个特殊的对象:arguments和this.
arguments.length检测函数的参数个数;
4)this:在函数外部使用this,this就指的是window对象;
函数内使用this也是window对象;
用new来调用,那么绑定的将是新创建的对象;
function test(){this.x=100;}
var obj=new test();
ogj.x=100;
作为某个对象的方法调用
function test(){this.x;}
var objo={};
objo.x=1000;
objo.m=text;
objo.m();//这里的x等于100,说明this指向objo;
事件监听函数中的this;
var div1=document.getElementById(‘div1’);
div1.οnclick=function(){this.innerHTML;};//this指向的是div元素;
5)全局变量可以看做window对象的属性;//调用:window.x;
6)函数的属性和方法:每个函数都包含两个属性:length和prototype
length:当前函数希望接受的命名参数的个数;arguments.length是实际传入的参数个数;
每个函数都包含两个非继承而来的方法:apply()和call();
函数名.apply(this,[参数]);//这里的this是作用域。可将“[参数]”改为arguments;
函数名.apply(this,参数1,参数2);
apply()和call()都是复制使用其他函数内容,只是接受参数的方式不太一样;通常用来扩充函数运行的作用域而非单纯的传递参数;
7)基本类型值有:undefined,NULL,Boolean,Number,和String;
8)引用类型:对象、数组、函数。
9)在变量复制时候,基本类型复制的是值本身,而引用类型复制的是地址;
//引用值
var man1=’张三’;
var man2=man1;//单将man1的值赋给man2,地址不复制;
//引用地址
var person1=new Object();
var preson2=preson1;//将preson1的地址复制到preson2;
面向对象:
1)类:每个对象都由类定义,可以把类看作对象的配方。
2)实例:程序使用类创建对象时,生成的对象叫做类的实例。由类创建对象实例的过程叫做实例化。
3)JavaScript对象定义:可以把对象理解为属性集合,每个属性存放一个原始值、对象或函数。
4)方法的实质就是函数,而属性的实质就是变量。
5)创建对象的方法:本质上都是把把“属性”和“方法”封装成一个对象。
var people=new Object();//创建对象
people.name=’孙悟空’;//添加属性
people.weapon=’金箍棒’;//添加属性
people.run=function(){
return this.name+’的武器是’+this.weapon
}//创建方法;this是指的当前作用域下的对象,注意和谁调用这个方法有关,和在哪定义没有关系。
6)工厂模式:使用创建并返回特定类型的对象的工程函数(其实就是普通函数,没啥区别,只是叫法不同)//和以前做移动函数一样,将定量变为可传递的参数,封装在一个函数里;
7)使用工厂模式创建的对象实例的地址是不同的,说明两个对象会占用两个地址空间的内存。
8)//如果有new函数里的this就是新创建出来的对象,如果没有就是window;
function fun(){this;}
fun();//window
new fun();//新创建
9)构造函数模式://构造函数不需要使用return语句返回对象,他的返回是自动完成的;
function creatPeople(name,weapon){
this.name= name;//添加属性
this.weapon= weapon;//添加属性
this.run=function(){
return this.name+’的武器是’+this.weapon
}
}
var wujing=new creatPeople(‘沙悟净’,‘禅杖’);
wujing instanceof creatPeople;//判断wujing是否是由creatPeople产生的;
10)Prototype模式(原型模式):Prototype方式定义的方式,函数不会拷贝到每一个实例中,所有实例共享Prototype中的定义,节省了内存。
function peop(){}
peop.prototype.name=’喽啰‘;
peop.prototype.weapon=’大刀‘;
peopprototype.run=function(){
return this.name+’的武器是’+this.weapon
}
//这时所有实例方法,其实都是同一个内存地址,指向Prototype对象,因此提高了运行效率;
var monster=new peop();
peop. Prototype.isPrototypeOf(monster);//判断monster是否是原型创建的;
11)in运算符可以用来判断某个实例是否含有某个属性,不管是不是本地属性;
12)构造函数和原型组合模式;即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法),结果是所有的函数都只创建一次,而每个对象都具有自己的对象属性实例。
function Moster(name,arr){
constructor: Moster,
this.name=name,
this.job=arr,
Moster.prototype={
run:function(){return this.name+’的武器是’+this.job;}//方法
}
}
13)继承的现实:对象冒充(构造函数绑定)//使用apply()和call()方法
//原型链方法;
function Monkey (){}
Monkey.prototype.type=’猴子’;
Monkey.prototype.say=function(){alert(‘我是快乐的猴子’)}

function Magicmonkey(){}
//将Magicmonkey的prototype对象指向一个Monkey的实例。
//相当于删除了prototype对象原先的值,然后赋予了一个新值。
//不能继承多个类,后边的会覆盖前面的;
Magicmonkey. Prototype=new Monkey();
Magicmonkey. Prototype.skill=’法术’;//这句必须在上面这个实例之后;
var sunWukong=new Magicmonkey();
混合方式:用对象冒充继承函数的属性,用原型链继承prototype对象方法。
function Magicmonkey(type,home){
Monkey.call(this,type,home);//继承属性
}
Magicmonkey. Prototype=new Monkey ();//用原型链继承Monkey 类的方法;
var wukong=new Magicmonkey(‘猴子‘,’花果山‘);//调用
匿名函数与闭包:
1) 匿名函数:没有名字的函数;
单独的匿名函数是无法运行和调用的
可以把匿名函数赋值给变量
通过表达式自我执行,语法:(匿名函数)()
匿名函数传递参数,语法:(匿名函数)(参数)
2) 闭包:指有权访问另一个函数作用域中变量的函数。
调用方式:myfn()()或var bb=myfn();bb();
3) 闭包的第一个用途:通过闭包可以访问局部变量
4) 闭包的第二个用途:可以让这些变量的值始终在内存内。
5) 闭包优点:可以把局部变量驻留在内存中,可以避免使用全局变量;
6) Cookie是储存于访问者计算机中的变量。常见应用场景:自动登录,记住用户名。。。
document.cookie=’张三’;//创建cookie;
7)JSON是储存和交换文本信息的语法。类似XML。本质上字符串。
//js中的对象表示
Var user={
Name:’张三’,
Age:’30’
}
//josn对象表示
{
“name”:”张三”,
“age”:”30”
}
//普通数组
Var arr=[“aa”,100,true];
//josn数组
[“aa”,100,true]
8)josn解析:eval可以将josn文本转换为javascript对象。
Var jsonobj=JOSN.parse(jsonstr,function(key,value){});// jsonstr是josn数据;第二个值是函数;
9)josn的序列化:js对象转换为josn数据(字符串)
Var jsonstr=JOSN.stringify(jsonobj,[数组]);//数组里是要解析的参数;
Var jsonstr=JOSN.stringify(jsonobj, function(key,value){});
Var jsonstr=JOSN.stringify(jsonobj, null,4);//第三个参数表示缩进;
9)AJAX异步于Javascript和XML;可以通过在后台与服务器进行少量的数据交换,是网页实现异步更新。这意味着可以不重新加载整个网页的情况下对网页某部分进行更新。
10)创建AJAX对象
Var myajax=new XMLHttpRequest()//IE6以下不支持
Var myajax=new ActiveXObject(“Microsoft.XMLHTTP”);
11)向服务器发送请求:使用open()和send()方法:
连接服务器:
//open(方法,文件名,异步传输);
方法:请求类型;GET或POST;
文件名:文件在服务器上的位置;
异步传输:ture(异步)或false(同步)
Myajax.open(‘GET’,’text.txt’,ture);
12)发送请求
Myajax.send (null);
13)接受返回的数据
responseText属性:reponnseText属性返回字符串形式的响应。
responseXML属性:如果来自服务器的响应是XML。而且需要作为XML对象作为哦解析,请使用responseXML属性;
onreadystatechange事件:每当readyState改变时,就会触发onreadystatechange事件;
onreadystatechange:属性:储存函数或函数名,每当readyState改变时,就会触发onreadystatechange事件;
readyState:存由XMLHttpRequest的状态。从0到4发生变化。
Myajax. Onreadystatechange=function(){
If (Myajax.readyState4){
If(Myajax.status
200)// status==200表示未找到页面
}
}
14)
JQuery:
1)能解决不同浏览器之间的兼容问题;
2)基础语法:$(selector).action();
$就是JQuery对象;选取对象的符号;功能函数的前缀;

你可能感兴趣的:(前端,javascript)