var a = 1;
function fn(){
this.a++;
a += 5;
var a = 8;
}
fn();
alert(a);
var a = 1;
function fn(){
var a = 2;
this.a++;
return a + this.a;
}
fn.a = 4;
var result = fn() + fn.call(fn);
alert(result);
原因:第一次的this指的是arr,第二次的this指的是window
var arr = [fn1,fn2];
function fn1(){
return this.length;
}
function fn2(){
return this[0];
}
var a = arr[0]();
var b = arr[1]()();
console.log(a);
console.log(b);
原因:第二次的时候a变成了4
var m = 1;
var obj = {
m : 2,
fn : (function(){
var a = 3;
return function(){
return this.m + ++a;
}
})()
}
var result = obj.fn.call(window) + obj.fn();
alert(result);
原因:第一次的this是指arr,length是2+7=9
var arr = [fn1,fn2];
function fn1(a,b,c){
return this.length;
}
function fn2(a,b,c,d){
return arguments.length;
}
var result = arr[0](1,2,3,4,5,6) + arr[1](1,2,3,4,5,6,7) + fn1(1,2);
alert(result);
Fun(para1,para2,para3){
var obj = {};
obj.para1 = para1;
obj.para2 = para2;
obj.para3 = para3;
return obj;
}
Fun.prototype.para4 = 4;
var o = new Fun(1,2,3);
console.log(o.para1);
console.log(o.para4);
console.log(o instanceof Fun);
console.log(o.__proto__ == Fun.prototype);
var obj = {};
var fun = function(){};
console.log(obj.constructor)
alert(obj.constructor.constructor == fun.constructor);
console.log(obj.constructor.constructor)
console.log(Object instanceof Object); //true
console.log(Function instanceof Function); //true
console.log(Number instanceof Number); //false
console.log(String instanceof String); //false
console.log(Function instanceof Object);//true
function Fun(){
this.a = 5;
function fun(){
this.a = 10;
}
return fun;
}
var o = new Fun();
console.log(o.a);