-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy paththis.js
More file actions
69 lines (47 loc) · 1.03 KB
/
this.js
File metadata and controls
69 lines (47 loc) · 1.03 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
console.log(this.document == document )
console.log(this === window)
this.a = 37
console.log(window.a)
function testThisKeyword() {
console.log(this) // [object Window]
}
testThisKeyword()
function testThisKeyword() {
console.log(this.name) // Alex
}
var name = 'Alex'
testThisKeyword()
///more examples
const person = {
name: 'Alex',
greet() {
console.log('Hey my name is ' + this)
}
}
person.greet() // Hey my name is Alex
//Explicit Binding
function greet() {
console.log( this.name );
}
var person = {
name: 'Alex'
};
greet.call( person,name); // Alex
//
function greet() {
console.log( this.name );
}
var person = {
name: 'Alex'
};
greet.apply( person, [name]); // Alex
//The bind function is a little bit different than the first two.
// It creates a new function that will call the original one with this bound to whatever was passed in.
function greet() {
console.log( this.name );
}
var person = {
name: 'Alex'
};
var greetPerson = greet.bind( person );
greetPerson(); // Alex