Object creation without "new" operation
We are JavaScripters #5 | April. 27th, 2017 | Mozilla Tech Speaker N.Shimizu (@chikoski)
Slide 2
Slide 2 text
Today's topic: what happens when we use new operator?
DMBTT1PJOU\
DPOTUSVDUPS Y
Z
\
UIJTYY
UIJTZZ
^
^
DPOTUQOFX1PJOU
2
Slide 3
Slide 3 text
Object literal
DPOTUB\
Y
Z
^
DPOTU[FSP\
Y
Z
^
3
Slide 4
Slide 4 text
A function to create object
GVODUJPOQPJOU Y
Z
\
SFUVSO\
YY
ZZ
^
^
DPOTUB
QPJOU
DPOTU[FSP
QPJOU
4
Slide 5
Slide 5 text
Create objects with methods' definitions
GVODUJPOQPJOU Y
Z
\
SFUVSO\
YY
ZZ
EJTUBODFGVODUJPO QU
\
DPOTUEYUIJTYQUY
DPOTUEZUIJTZQUZ
SFUVSO.BUIBCT EY
.BUIBCT EZ
^
^
5
Slide 6
Slide 6 text
Modification: shared function objects
DPOTUEGVODUJPO QU
\
DPOTUEYUIJTYQUY
DPOTUEZUIJTZQUZ
SFUVSO.BUIBCT EY
.BUIBCT EZ
^
GVODUJPOQPJOU Y
Z
\
SFUVSO\YY
ZZ
EJTUBODFE^
^
6
A chunk of methods for objects created with point function
DPOTUQPJOU.FUIPET\
EJTUBODFGVODUJPO QU
\
DPOTUEYUIJTYQUY
DPOTUEZUIJTZQUZ
SFUVSO.BUIBCT EY
.BUIBCT EZ
^
OPSNGVODUJPO
\
SFUVSOUIJTEJTUBODF \Y
Z^
^
^
8
Slide 9
Slide 9 text
Modified point function
GVODUJPOQPJOU Y
Z
\
DPOTUPCK\YY
ZZ^
GPS DPOTUOBNFJOQPJOU.FUIPET
\
PCKQPJOU.FUIPET
^
SFUVSOPCK
^
9
Slide 10
Slide 10 text
Separating object creation process from its initialization
GVODUJPODSFBUF JOJUJBMJ[FS
BSHT
\
DPOTUPCK\^
JOJUJBMJ[FSBQQMZ PCK
"SSBZQSPUPUZQFTMJDFBQQMZ BSHT
SFUVSOPCK
^
10
Slide 11
Slide 11 text
create function usage
GVODUJPOQPJOU Y
Z
\
UIJTYY
UIJTZZ
GPS DPOTUOBNFJOQPJOU.FUIPET
\
UIJTQPJOU.FUIPET
^
^
DPOTUQDSFBUF QPJOU
DPOTU[FSPDSFBUF QPJOU
11
An implementation of kindOf using special field in objects
GVODUJPOLJOE0G PCK
UFNQMBUF
\
SFUVSOPCKUFNQMBUFUFNQMBUF
^
21
Slide 22
Slide 22 text
Now we have implemented object creation system
22
Function / attributes Equivalent feature in JS syntax
create new
Template Consturctor
Template.methods Function.prototype
kindOf instanceof
object.template object.constructor