JAVASCRIP
YOU DON’T KNOW
1
2
Nothing here
3
HMMM…
WHO ADDED
THIS SLIDE…
VEEEEEERRRR!!
4
SORRY …
PLEASE
CONTINUE…
VEER
SORRY 5
6
HISTORY
7
8
“WHATS IS
JAVASCRIPT?”
aaaa…hmmm..haa
a…
9
A
SINGLE-THREADED
NON-BLOCKING
ASYNCHRONOUS
CONCURRENT
LANGUAGE
WHAT IS JAVASCRIPT 10
WHAT IS JAVASCRIPT 11
IT HAS
A CALL STACK
AND EVENT LOOP
A CALLBACK QUEUE
& SOME OTHER APIS
WHAT IS JAVASCRIPT 12
WHAT IS JAVASCRIPT 13
WHAT IS JAVASCRIPT
CALL STACK
main()
console.log(sp
eak())
speak()
getsound()
bow bow!
OUTPUT
CODE
14
WHAT IS JAVASCRIPT 15
WHAT IS JAVASCRIPT 16
YA ..I DON’T
BELIEVE YOU..
SHOW PROOF!
Vee
r
WHAT IS JAVASCRIPT 17
WHAT IS JAVASCRIPT
OK!
18
“PASS BY
REFERENCE
/ VALUE”
Ofcourse its
value..isn’t it
19
PASS BY REFERENCE OR VALUE
REFERENCE / VALUE
20
PASS BY REFERENCE OR VALUE
WHATS THE OUTPUT?
21
PASS BY REFERENCE OR VALUE
WHATS THE OUTPUT?
22
PASS BY REFERENCE OR VALUE
WHATS THE OUTPUT?
23
PASS BY REFERENCE OR VALUE
BY VALUE
STRING
NUMBER
BOOLEAN
24
PASS BY REFERENCE OR VALUE
BY REFERENCE
ARRAY
OBJECT
25
PASS BY REFERENCE OR VALUE
W TO PASS ARRAY BY VAL
It’s a shallow copy
Works only for generics i.e string etc, but not
for array of object
26
PASS BY REFERENCE OR VALUE
SHALLOW COPY
27
PASS BY REFERENCE OR VALUE
W TO PASS OBJECT BY VAL
28
PASS BY REFERENCE OR VALUE
W TO PASS OBJECT BY VAL
Object.assign() is useful for merging objects or cloning them
shallowly.
29
“THIS”
WTF is this?
30
THIS
HE SAYS MYSELF HE REALLY MEAN
31
A VARIABLE
WITH THE VALUE
OF THE OBJECT
THAT INVOKES THE
FUNCTION
THIS 32
THE VALUE OF THIS
IS BASED ON THE
CONTEXT
IN WHICH THE
FUNCTION
IS CALLED AT RUNTIME
THIS 33
GRRRRR….STILL
NOT GETTING IT…
:(
Vee
r
THIS 34
THIS
WHATS THE OUTPUT?
35
THIS
WHATS THE OUTPUT?
36
THIS 37
“CLOSURE”
Love this song by
chainsmokers
..Ehh?
38
CLOSURE 39
A LOCAL VARIABLE
OF THE FUNCTION -
KEPT ALIVE AFTER
THE FUNCTION IS
RETURNED
CLOSURE 40
THE RETURNED
FUNCTION
HAS ACCESS TO THE
PARENT SCOPE
EVEN IF
THE PARENT FUNCTION
HAS ENDED
CLOSURE 41
GRRRRR….
NO CLOSURE TO
THIS… :(
Vee
r
CLOSURE 42
CLOSURE
WHATS THE OUTPUT?
43
CLOSURE
WHATS THE OUTPUT?
44
“PROTOTY
PE”
i won’t say a word !
45
A PROTOTYPE IS A
COLLECTION
OF PROPERTIES AND
METHODS
THAT CAN BE
AUTOMATICALLY
ATTACHED TO A
OBJECT WHEN CREATED
PROTOTYPE 46
EVERY
JAVASCRIPT FUNCTION
HAS A
PROTOTYPE PROPERTY
PROTOTYPE 47
PRIMARILY USED
FOR INHERITANCE
PROTOTYPE 48
GRRRRR….
NOT ABLE TO
INHERIT… :(
Vee
r
PROTOTYPE 49
PROTOTYPE
WHATS
THE
OUTPUT?
50
YOU CAN ADD
PROPERTIES TO
PROTOTYPE ANY
TIME
PROTOTYPE
THE PROTOTYPE
CHAIN
WILL FIND THE NEW
PROPERTY
51
PROTOTYPE
WHATS
THE
OUTPUT?
52
YOU CAN EXTEND
NATIVE OBJECTS
PROTOTYPE 53
PROTOTYPE 54
“MODULE
PATTERN”
PATTERNS IN
JAVASCRIPT
..SERIOUSLY?
55
MAINTAINABILITY
NAMESPACING
REUSABILITY
MODULE PATTERN 56
MODULE PATTERN
IMMEDIATELY INVOKING FUNCTION
57
MODULE PATTERN
GLOBAL VARIABLE IMPORT
58
MODULE PATTERN
OBJECT
INTERFACE
59
MODULE PATTERN
COMMONJS MODULE
(NODE JS)
Explicit dependencies
Loads module synchronously
60
MODULE PATTERN 61
MODULE PATTERN
AMD
YNCHRONOUS MODULE DEFINITION
Explicit dependencies
Loads module asynchronously
62
WAKE HIM UP!
63
“FUNCTIONS”
Ahh! I know this
Dont’t I?
64
FUNCTIONS
FUNCTION CONSTRUCTOR
65
FUNCTIONS
FUNCTION CONSTRUCTOR
Can be used instead of eval.
Jquery Uses to covert JSON String to Object
66
FUNCTIONS
BIND
When called, has its ‘this’ keyword set to the provided value
It explicitly lets you define the value of ‘this’
67
FUNCTIONS
CALL / APPLY
call() method calls the function with a given this value and arguments provid
apply() method calls the function with a given this value and an array of all a
68
FUNCTIONS
DIFFERENCE
BIND & CALL/APPLY
Call accepts additional parameters
Call executes the function right away
Call does not make a copy of the function it is being called on
69
70
LETS TAKE A
BREAK!
Vika
s
FUNCTIONS 71
72
73
WEB DEVELOPER
WITH A JOB
WEB DEVELOPER
WITHOUT A JOB
74
BIG CLAP FOR PAKYA..
THANKS FOR BEING A
SPORT
BUS KARO YAARO
OUR KITNI MAROGE
“EVAL”
I Heard its Evil..
75
EVAL
CHECK THIS FOR MORE INFO
Click
76
“CLEAN
CODE”
Swach Code
Abhiyaan :P
77
CLEAN CODE 78
CLEAN CODE
RETHINK LOOP
Lets forget for loop
79
CLEAN CODE
RETHINK LOOP-FILTER
80
CLEAN CODE
RETHINK LOOP-MAP
81
CLEAN CODE
RETHINK LOOP-SORT
82
CLEAN CODE
RETHINK LOOP-REDUCE
83
CLEAN CODE
RETHINK LOOP - SUMMARY
84
CLEAN CODE
RETHINK LOOP - TASKS
Get people with gender male & scientist
Sort by last name
Get total count of male & female
85
CLEAN CODE
RETHINK IF - TERNARY
86
condition ? expr1 : expr2
if else pattern
CLEAN CODE
RETHINK IF - TERNARY
87
What about else if
CLEAN CODE
RETHINK SWITCH
88
“DEBUG”
Its not a bug..its a
feature
89
DEBUG 90
DEBUG
DD ALERT AT EACH LIN
91
HOW WILL YOU FIX IT
DEBUG 92
DEBUG 93
DEBUG 94
DEBUG 95
DEBUG 96
LETS GO TO
CHROME DEVELOPER TOOLS
“CALLBACK
HELL”
Ohhhhh!
97
CALLBACK HELL 98
CALLBACK HELL 99
CALLBACK HELL 100
CALLBACK HELL 101
CALLBACK HELL
WHAT IS A
PROMISE?
A OBJECT THAT MAY
PRODUCE A SINGLE
VALUE IN THE FUTURE
A PROMISE IS AN
ASYNCHRONOUS
VALUE
102
CALLBACK HELL
PROMISE HAS
3 STATES
FULFILLED
REJECTED
PENDING
103
CALLBACK HELL 104
CALLBACK HELL
CREATE PROMISE
105
CALLBACK HELL
CALL PROMISE
106
CALLBACK HELL
PROMISE
CHAINING
107
CALLBACK HELL
MULTIPLE
PROMISE
108
CALLBACK HELL
ASYNC AWAIT
109
“ES6”
WOW!
110
ES6
ARROW FUNCTION
111
No need to specify function keyword
Implicit return at last line
Brings clarity & code reduction
ES6
TEMPLATE
LITERALS
112
Use the tilde sign to enclose the string
No more + sign or “ for concatenation
All scope variables can be accessed
ES6
SPREAD
OPERATOR
113
ES6
MANIPULATING
OBJECTS
114
ES6
MODULES
115
“BACKBONE
JS”
118
BACKBONEJS 119
BACKBONEJS 120
WHAT IT
IS?
Provides client side app structure
It contains Models to represent data
It contains Views to hook up Models to the DOM
Synchronises data to/from server
BACKBONEJS 121
IT’S A
MV*
FRAMEWORK
MODEL,VI
EW & *
BACKBONEJS 122
MOD
EL
Application data and business rules
It also contains events which notifies any change in data
Views are updated using these event notifications
his gives you one source of truth, which is not the user interfac
BACKBONEJS 123
VIE
W
User interacts with View
It observes any data change event in model
It reads and edits Model
BACKBONEJS 124
ROU
TER
Everything after the hashtag is considered as router
Manages application state like bookmarking a particular view
Maps your URL to function
BACKBONEJS 125
BACKBONEJS 126
HTTP REQUEST/RESPONSE
LIFECYCLE FOR SERVER-
SIDE MVC
BACKBONEJS 127
MVC AS
IMPLEMENTED BY
BACKBONEJS
BACKBONEJS 128
DEPENDE
NCIES
JQUERY &
UNDERSCORE
BACKBONEJS 129
BACKBONEJS 130
131
132

You Don't Know Javascript