116 lines
1.4 KiB
Markdown
116 lines
1.4 KiB
Markdown
# this
|
||
1
|
||
|
||
function fn2(){
|
||
console.log(this.n)
|
||
var n='n'
|
||
this.n=10
|
||
console.log(n)
|
||
}
|
||
var obj={fn2:fn2, n:1}
|
||
fn2()
|
||
obj.fn2()
|
||
console.log(obj.n, window.n)
|
||
|
||
|
||
2
|
||
|
||
function f(){console.log(this)}
|
||
|
||
var obj={
|
||
fn: (function(){
|
||
return this.f
|
||
})(),
|
||
f: function(){console.log(this)}
|
||
}
|
||
f()
|
||
obj.f()
|
||
obj.fn()
|
||
|
||
|
||
3
|
||
|
||
var n = 10
|
||
var obj1={
|
||
n:1,
|
||
f:function(){this.n++; n=this.n++}
|
||
}
|
||
|
||
obj1.f()
|
||
console.log(n)
|
||
console.log(obj1.n)
|
||
window.setTimeout(obj1.f, 1000)
|
||
|
||
|
||
4
|
||
|
||
console.log(getA)
|
||
if('a' in window){
|
||
var a = ''
|
||
function getA(a){
|
||
a = a||this.a
|
||
console.log(this.a)
|
||
}
|
||
getA(a)
|
||
}
|
||
|
||
5
|
||
|
||
var a=2
|
||
var obj1 = {
|
||
a:1,
|
||
fn1: (function(a){
|
||
this.a = a
|
||
a++
|
||
return function(){
|
||
this.a = a++
|
||
console.log(a)
|
||
}
|
||
|
||
})(a)
|
||
}
|
||
obj1.fn1()
|
||
var fn1 = obj1.fn1
|
||
fn1() // window.a = 4,a=5
|
||
|
||
6
|
||
|
||
var c=3
|
||
function getC(){
|
||
this.c++
|
||
return function (){
|
||
c=this.c*2
|
||
console.log(c)
|
||
}
|
||
}
|
||
var obj3={
|
||
c: 2,
|
||
getC:(function(){
|
||
this.c -= 1
|
||
return this.getC
|
||
})()
|
||
}
|
||
getC()
|
||
obj3.getC()
|
||
var f3=obj3.getC
|
||
f3()
|
||
console.log(window.c)
|
||
console.log(obj3.c)
|
||
|
||
|
||
for (var i = 1; i <= 5; i++) {
|
||
|
||
setTimeout( function timer() {
|
||
|
||
console.log(i);
|
||
|
||
}, 1000 );
|
||
|
||
}
|
||
|
||
上面的代码会输出什么?怎么改动上述代码,使其依次输出1、2、3、4、5 并说明原因
|
||
|
||
|
||
理论题:
|
||
谈谈什么是闭包
|