this
面试题
this
指向
this.age = 9;
var melon = {
age: 81,
get_age: function () {
return this.age;
}
};
melon.get_age();
var get_age1 = melon.get_age;
get_age1();
var get_age2 = get_age1.bind(melon);
get_age2();
1
2
3
4
5
6
7
8
9
10
11
12
var x = 10;
function melon() {
return this.x;
}
let obj = {
x: 21,
y: function () {
return melon();
},
z: melon
}
console.log(obj.y());
console.log(obj.z());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function melon() {
let arr = [];
for (var i = 0; i < 3; i++) {
arr[i] = function () {
return i;
}
}
return arr;
}
let res = melon();
res.forEach(item => {
item();
});
1
2
3
4
5
6
7
8
9
10
11
12
13
function melon() {
var res = new Array();
for(var i = 0; i < 10; i++) {
res[i] = function() {
return i;
}
}
return res;
}
var bgg = melon();
bgg[5]();
bgg[10];
1
2
3
4
5
6
7
8
9
10
11
12
function Foo() {
var i = 0;
return function() {
console.log(i++);
}
}
var f1 = Foo(),
f2 = Foo();
f1();
f1();
f2();
1
2
3
4
5
6
7
8
9
10
11
12
var bb = 1;
function aa(bb) {
bb = 2;
alert(bb);
};
aa(bb);
alert(bb);
1
2
3
4
5
6
7
async function async1() {
console.log('async1 start')
await async2()
console.log('async1 end')
}
async function async2() {
console.log('async2')
}
console.log('script start')
setTimeout(function () {
console.log('settimeout')
})
async1()
new Promise(function (resolve) {
console.log('promise1')
resolve()
}).then(function () {
console.log('promise2')
})
console.log('script end')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(async () => {
console.log(1);
setTimeout(() => {
console.log(2);
}, 0)
await new Promise((resolve, reject) => {
console.log(3);
}).then(() => {
console.log(4);
});
console.log(5);
})();
1
2
3
4
5
6
7
8
9
10
11
12
for (let i = 0; i <= 2; i++) {
console.log(i);
setTimeout(() => {
console.log(i);
}, 0);
}
1
2
3
4
5
6
console.log('a');
setTimeout(() => {
console.log('b');
}, 0);
Promise.resolve().then(() => {
console.log('c');
}).then(() => {
console.log('d');
})
console.log('e');
1
2
3
4
5
6
7
8
9
10
async function async1() {
console.log('async1 start');
await async2();
console.log('async1 end');
}
async function async2() {
console.log('async2');
}
console.log('script start');
setTimeout(function () {
console.log('setTimeout');
}, 0)
async1();
new Promise(function (resolve) {
console.log('promise1');
resolve();
}).then(function () {
console.log('promise2');
});
console.log('script end');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
window.name = 'window';
var person1 = {
name: 'person1',
f001: function () {
console.log(this.name);
},
f002: () => console.log(this.name),
f003: function () {
return function () {
console.log(this.name);
};
},
f004: function () {
return () => {
console.log(this.name);
};
},
};
var person2 = { name: 'person2' };
function fn() {
return 123;
}
person1.f003()();
person1.f004()();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26