Skip to content

Latest commit

 

History

History
81 lines (72 loc) · 1.52 KB

test.md

File metadata and controls

81 lines (72 loc) · 1.52 KB

笔试题

  1. 考察this作用域
var foo = {
	bar: '你好',
	func: function () {
		alert(this.bar);
	}
},
bar = foo.func;
bar();
/* 
 * 答案:function () { alert(this.bar) }
 * 把foo.func函数赋值给全局变量bar然后执行,这等价于执行全局函数。全局函数的this是指向window的,
 * 所以alert(this.bar)等于alert(window.bar),也就是alert函数自身。
 */
 
  1. this的指向问题
var x = 20;
var temp = {
    x: 40,
    foo: function () {
        var x = 10;
        return this.x;
    }
};

console.log( temp.foo() );  			// 40 this对象为temp,this.x等于temp.x
console.log( (temp.foo)() ); 			// 40 
console.log( (temp.foo = temp.foo)() ); // 20   不懂
console.log( (temp.foo, temp.foo)() );	// 20   不懂
console.log( temp.foo.apply(window) );  // 20 apply使temp.foo的this对象为window上下文,this.x等于window.x
console.log( temp.foo.apply(temp) ); 	// 40 apply使temp.foo的this对象指向temp上下文,this.x等于temp.x
var foo={n:1};
(function(foo){
   console.log(foo.n);
   foo.n=3;
   var foo={n:2};
   console.log(foo.n);
})(foo);
   console.log(foo.n);
   
function Foo(){
    var i =0;
    return function() {
        document.write(i++);
    }
}
var f1=Foo();
f1();
f1();
f2();
var color = 'green';
var test = {
  color: 'blue',
  getColor:function(){
    var color = 'red';
    alert(this.color);
   }
}
var getColor = test.getColor;
getColor();
test.getColor();