Object creation in Javascript
1)Literal Notation It's comma delimited list of 0 or more pairs of property names and values enclosed in curly braces
let car = {
    mark: 'Toyota',
    model: 'AE86',
    drift: function(place){ //method
        return 'car is drifting on the ' + place;
    }

};
--------------------------------------------------------------------------------------------------------------------------------------------------- 2)Object() constructor The Object constructor creates an object wrapper for the given value
let car = new Object();

car.mark = 'Toyota';
car.model = 'AE86';
car.drift = function(place){
    return this.mark+ ' is drifting on the ' + place;
}
new Object('text')
gives us String object,
new Object(123)
gives us Number object and so on, anything other than null/undefined given to this constructor will create wrapper for that value___________ 3)Constructor functions Blueprint function to create any number of objects that are the same type and inherit the same functionality
function Car(mark, model, speed){
    this.mark = mark;
    this.model = model;
    this.speed = speed;
}
Car.prototype.drift = function(place){
    return this.mark+ ' is drifting on the ' + place;
}

let car1 = new Car('Toyota', 'AE86', 240);
let car2 = new Car('Subaru', 'Impreza', 200);
this keyword is an object that owns the code but in this context it is meant to be the newly created object by this constructor --------------------------------------------------------------------------------------------------------------------------------------------------- 4)Object.create() method
let car = Object.create({});

car.mark = 'Toyota';
car.model = 'AE86';
car.drift = function(place){
    return this.mark+ ' is drifting on the ' + place;
}
giving null/undefined to
create
method will cause newly created object to have no prototype, which by default should be
Object.prototype
, or alternatively you can use prototype of another constructor function
let car = Object.create(Car.prototype)
or object itself to set a new prototype of an object
let car = Object.create({prototype_property1: 'value1'})
you can also use
property descriptor
to assign properties more precisely as you desire
let car2 = Object.create({}, {
    mark: {
        value: 'Toyota'
        writable: true  // false by default
        enumerable: true  // false by default
        configurable: true  // false by default
    },
    model: {
        value: 'AE86'
    },
    speed: {
        value: 240
    },
    drift: {
        value: function(place){
            return this.mark+ ' is drifting on the ' + place;
        }
    },
})
--------------------------------------------------------------------------------------------------------------------------------------------------- 5)ES6 class syntax WARNING: ES6 features might not be available for older version of some browsers
class Car{
    constructor(mark, model, speed){
        this.mark = mark;
        this.model = model;
        this.speed = speed;
    }
    drift(place){
        return this.mark+ ' is drifting on the ' + place;
    }
}
this is basically the same as constructor function but the different syntax --------------------------------------------------------------------------------------------------------------------------------------------------- 6)singleton pattern downside of this is that you can't create many instances and methods will repeat
let car = new function(){
    this.mark = 'Toyota';
    this.model = 'AE86';
    this.speed = 240;
    this.drift = function(place){
        return this.mark+ ' is drifting on the ' + place;
    }
}
by გიორგი უზნაძე
4 years ago
JavaScript
Object
Beginner
0
Pro tip: use ```triple backticks around text``` to write in code fences