1 | window.number = 1 |
2 | var obj = { |
3 | 'number':4, |
4 | 'dbl':(function(){ |
5 | this.number *=2 |
6 | return function(){ |
7 | this.number *=2 |
8 | } |
9 | })() |
10 | } |
11 | var dbl = obj.dbl |
12 | dbl() |
13 | obj.dbl() |
14 | console.log(window.number + obj.number) |
执行函数dbl 时,this指向了window, 所以window.number = 1*2* 2 = 4,执行 函数obj.dbl()时,this指向了obj,所以 obj.number = 8, 最终结果为12
1 | function C1(name){if(name) this.name = name} |
2 | function C2(name){this.name=name} |
3 | function C3(name){this.name = name || 'John';} |
4 | |
5 | C1.prototype.name = 'Tom'; |
6 | C2.prototype.name = 'Tom'; |
7 | C3.prototype.name = 'Tom'; |
8 | console.log((new C1()).name + (new C2()).name + (new C3()).name) |
(new C1()).name 没有传值,在C1.prototype上取值,所以是’Tom’(new C1()).name 没有传值,默认是undifined,所以name 值 为 undifined(new C1()).name 没有传值,默认是 ‘John’,所以name 值 为 ‘John’
1 | //请定义这样一个函数 |
2 | function repeat (func, times, wait) { |
3 | |
4 | } |
5 | //这个函数能返回一个新函数,比如这样用 |
6 | var repeatedFun = repeat(console.log, 3, 2000) |
7 | //调用这个 repeatedFun ("hellworld") |
8 | //会alert十次 helloworld, 每次间隔5秒 |
1 | function repeat (func, times, wait) { |
2 | return function(){ |
3 | var handle,i=0,arg=arguments |
4 | handle = setInterval(function(){ |
5 | if(++i === times){ |
6 | clearInterval(handle) |
7 | } |
8 | return func.apply(null,arg) |
9 | },wait) |
10 | } |
11 | } |
12 | var repeatedFun = repeat(console.log, 3, 2000) |
13 | repeatedFun ("hellworld") |