Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict'
- const ITERATION = 1000
- console.log(
- process.version,
- ITERATION,
- 'iteration',
- 'with Type and freeze – v2: prototype based constructor function'
- )
- /**
- * Type enumeration.
- * @readonly
- * @enum {string}
- */
- const Type = {
- /** Homo sapiens sapiens */
- HUMAN: 'HUMAN',
- /** brrr... zz... */
- ROBOT: 'ROBOT'
- }
- Object.freeze(Type)
- // closure function test
- const Human = () => {
- const _type = [Type.HUMAN]
- let _name
- let _iq
- return {
- setIQLevel (iq) {
- _iq = iq
- return this
- },
- getIQLevel () {
- return _iq
- },
- setName (name) {
- _name = name
- return this
- },
- getName () {
- return _name
- },
- getType () {
- return _type
- },
- get () {
- return {
- type: _type,
- iq: this.getIQLevel(),
- name: this.getName()
- }
- }
- }
- }
- let i = 0
- let SarahConnor
- let start = process.hrtime.bigint()
- while (i < ITERATION) {
- SarahConnor = Human()
- .setName('Sarah Connor')
- .setIQLevel(154)
- i++
- }
- let end = process.hrtime.bigint()
- let closureExampleTime = end - start
- // console.log('Sarah Connor:', SarahConnor.get())
- // constructor function test
- function Human2 ({ iq, name }) {
- this.iq = iq
- this.name = name
- this.type = [Type.HUMAN]
- }
- Human2.prototype.setIQLevel = function (iq) {
- this.iq = iq
- }
- Human2.prototype.getIQLevel = function () {
- this.iq
- }
- Human2.prototype.setName = function (name) {
- this.name = name
- }
- Human2.prototype.getName = function () {
- return this.name
- }
- Human2.prototype.getType = function () {
- return this.type
- }
- Human2.prototype.get = function () {
- return {
- type: this.type,
- iq: this.iq,
- name: this.name
- }
- }
- i = 0
- let JohnConnor
- start = process.hrtime.bigint()
- while (i < ITERATION) {
- JohnConnor = new Human2({ iq: 154, name: 'John Connor' })
- i++
- }
- end = process.hrtime.bigint()
- let funcExampleTime = end - start
- // console.log('John Connor:', JohnConnor.get())
- // class test
- class Human3 {
- constructor ({ iq, name }) {
- this.iq = iq
- this.name = name
- this.type = [Type.HUMAN]
- }
- setIQLevel (iq) {
- this.iq = iq
- }
- getIQLevel () {
- this.iq
- }
- setName (name) {
- this.name = name
- }
- getName () {
- return this.name
- }
- getType () {
- return this.type
- }
- get () {
- return {
- type: this.type,
- iq: this.iq,
- name: this.name
- }
- }
- }
- i = 0
- let KatrineBrewster
- start = process.hrtime.bigint()
- while (i < ITERATION) {
- KatrineBrewster = new Human3({ iq: 154, name: 'KatrineBrewster' })
- i++
- }
- end = process.hrtime.bigint()
- let classExampleTime = end - start
- console.info(
- `CL: ${closureExampleTime}, FN: ${funcExampleTime}, CLASS: ${classExampleTime} nanosec.`
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement