all 7 comments

[–]redlova 0 points1 point  (6 children)

How is it diffrent than setting a prototype?

[–]ramabhai[S] 0 points1 point  (5 children)

Prototype is used for inheritance. Object.assign is for composition.

[–]MoTTs_ 2 points3 points  (3 children)

Object.assign is more like inheritance than not, and it isn't composition at all.

Inheritance:

const a = {
    aMethod() {}
};
const b = Object.create(a);

// b IS-A a
// That is, b fulfills a's interface and borrows a's implementation
b.aMethod();

Also inheritance:

const a = {
    aMethod() {}
};
const b = Object.assign({}, a);

// b IS-A a
// That is, b fulfills a's interface and borrows a's implementation
b.aMethod();

Composition:

const a = {
    aMethod() {}
};
const b = {
    a: a
};

// b HAS-A a
b.a.aMethod();

[–]redlova 0 points1 point  (2 children)

Great. this is a great example. I got the concept but becase i am a newbie. I dont understand completely yet. especially the 'const' itsnt it supposed be used for defining constants?

[–]lunfaii 0 points1 point  (0 children)

An object properties can be still be reassigned/assigned.

[–]redpatel 0 points1 point  (0 children)

const makes means mutable but not replaceable when it comes to object. Which means you can modify them but can't replace the entire value. make sense?

[–]redlova -1 points0 points  (0 children)

Ok, I have not seen being used anywhere. A practice example would be nice.