<h2>this</h2>
1.普通函数
function t(){
this.age=23;
console.log(this);
}
t()//调用者为null,this为null时js将this指向了window,在es5之后会抛出异常
2.作为对象的方法来调用
var intro=function(){return "mynameis"+this:name}
var dog={name:"123",intro:intro}
dog.intro();
var cat={name:"789"}
cat.intro=dog.intro
cat.intro();//789
3.构造函数
function cat(name){
this.name=name;
this.color=color;
}
//方法new的瞬间,得到一个空对象,运行this指向空对象,运行方法{}.name=name;
var cat=new cat()//得到一个新对象 从而触发了一个函数
4.通过call和apply可以改变this的指向
函数名.call($,$,$);
1.将函数的this指向对象
2.运行函数,传参数$,$,$;
函数名.apply(obj, array[]);
5.闭包
function t(){
var age=23;
return function(){
console.log(age++);
}
}
var tmp=t();
var age=1000;
tmp();//
6.构造方法
function Dog(name,color){
this.name=name;
this.color=color;
}
var dog=new Dog("donggua","shaoyan");
console.log(dog);
7.私有属性
function girl(name,lover){
var nm=name;
var love=lover;
this.getlove=function(){
return love;
}
this.getname=function(){
return nm;
}
}
var girl=new girl("123","234");
console.log(girl);
console.log(girl.getlove());
8.原型继承
对着猫来画老虎
function cat(){
this.climb=function(){
alert("ps")
}
}
function Tiger(){
this.hunt=function(){
alert("dl");
}
}
Tiger.prototype=new cat();
var tiger=new Tiger();
tiger.hunt();
tiger.climb()
//console.log(tiger)
Tiger.prototype.song=function(){
alert("789")
}
tiger.song();
9.原型冒充
function good(){
this.iq=120
this.study=function(){
console.log("gao")
}
}
function bad(){
good.call(this);
this.play=function(){
console.log("mhxy")
}
}
var good=new good();
var bad=new bad();
good.study();
bad.play();
bad.good();
10.原型复制
function good(){
this.iq=120
this.study=function(){
console.log("gao")
}
}
function bad(){
this.play=function(){
console.log("mhxy")
}
this.extend=function(obj){
for(var k in obj){
this[k]=obj[k];
}
}
}
var good=new good();
var bad=new bad();
bad.extend(good);
console.log(bad);
11.函数也是一种对象
$("#id")
$.ajax