-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainOK.js
More file actions
115 lines (94 loc) · 2.41 KB
/
mainOK.js
File metadata and controls
115 lines (94 loc) · 2.41 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
// the concept of the nested functions scopes
// let a = 10;
// function outer() {
// let b = 40;
// function inner() {
// let c = 80;
// console.log(a, b, c);
// }
// inner();
// }
// outer();
//understanding the closure
// function outer(){
// let counter = 0;
// function inner(){
// counter ++;
// console.log(counter);
// }
// return inner;
// }
// const ok = outer();
// ok();
// ok();
// function myName(name) {
// console.log(`my name is ${name}`);
// }
// myName('tshewang');
// understanding the this keyword is js(implicit, explicit, new, default)
// implicit binding
const person = {
name: "tshewang",
sayMyName: function () {
console.log(`my name is ${this.name}`);
}
}
//person.sayMyName();
// explicit
// function sayMyName() {
// console.log(`my name is ${this.name}`);
// }
// sayMyName.call(person);
// new binding
// function Person(name) {
// // this={}
// this.name = name;
// }
// const p1 = new Person('TSHEWANG');
// const p2 = new Person('gyaltshen');
// console.log(p1.name);
// function prototype in js
// function Person(fName, lName) {
// this.firstName = fName,
// this.lastName = lName
// }
// const person1 = new Person('Bruce', 'Wayne');
// const person2 = new Person('Tshewang', 'Gyaltshen');
// // attaching the new objects
// Person.prototype.getFullName = function () {
// return this.firstName + " " + this.lastName
// }
// console.log(person1.getFullName());
// // inheritance concept
// function superHero(fName, lName) {
// Person.call(this, fName, lName)
// this.isSuperHero = true;
// }
// superHero.prototype.fightCrime = function () {
// console.log('figthing crime')
// }
// // to inherit getFullName
// superHero.prototype = Object.create(Person.prototype);
// const batman = new superHero('bruce', 'wayna');
class Person {
constructor(fName, lName) {
this.firstName = fName,
this.lastName = lName
}
sayMyName() {
return this.firstName + " " + this.lastName
}
}
const classP1 = new Person('Bruce', 'Wayne')
console.log(classP1.sayMyName());
class SuperHero extends Person {
constructor(fName, lName) {
super(fName, lName);
this.isSuperHero = true
}
fightingCrime() {
console.log('figthing crime')
}
}
const batman = new SuperHero('tshewang', 'gayltshen');
console.log(batman.sayMyName());