function f1(){
console.log(this);
}
f1();//window
function f2(){
return function(){
console.log(this);
}
}
var f2n=f2();
f2n();//this——>window,这也是一次函数调用模式
function f3(){
f3n();//函数调用模式——————>window
function f3n(){
console.log(this);
}
}
f3();// window
//代码1:
var obj={
age:10,
say:function(){
console.log(this.age);
}
};
obj.say();//方法调用模式
//代码2:
function f1(){
console.log(this);
}
var obj2={
s1:f1//将f1函数赋值给obj2.s1属性
};
obj2.s1();//方法调用模式——>this:obj2
//代码3:
var obj3={
age:10,
s1:function(){
console.log(this.age);
}
};
var obj4={
age:20,
s2:obj3.s1//将obj3.s1函数赋值给s2属性
};
obj4.s2();//方法调用模式:this——>obj4
③
//代码1:
function Person(){
this.age=20;
this.name="张三";
console.log(this);
}
//构造函数调用模式:
var p1=new Person();
//代码2;
function P2(){
this.age=18;
return "abc";
}
var p2=new P2();//p2.age=18
//代码3:
function P3(){
this.age=10;
return {};
}
var p3=new P3();//p3.age:undefined
console.log("p3.age");
console.log(p3.age);
//代码4:
function P4(){
this.age=10;
return [1,3,5];
}
var p4=new P4();//p4.age:undefined
console.log("p4.age");
console.log(p4.age);
function f1(){
console.log(this);
}
//上下文模式
f1.call(null);//window
f1.call(undefined);//window
f1.call(1);//Number的实例
f1.call("abc");//String的实例
f1.call(true);//Boolean的实例
var s1="abc";
console.log(s1.length);//3
console.log(s1[0]);//"a"
//代码内部创建了字符串所对应的String构造函数的实例
//{0:"a",1:"b",2:"c",length:3}
//代码执行完毕之后,就会把这个实例给销毁