Это в основном вопрос предпочтений.Не существует одного способа приготовления супа с куриной лапшой, и однородные объекты одинаковы.
Я не использую ни одного из этих трех, хотя они все работают в своих собственных целях.Я использую пользовательскую функцию под названием Object: deploy, и использую ее следующим образом ..
var a = { hey: 'hello' },
b = {}.deploy(a);
console.log(b.hey); // 'hello'
Использование prototype
лучше всего подходит для большинства людей из-за автоматического ручного ввода.
function A() {};
A.prototype.hello = "Hey";
var a = new A();
console.log(a.hello); // 'Hey'
A.prototype.hello = "Hello";
console.log(a.hello); // 'Hello'
И вопреки распространенному мнению, вы можете использовать закрытые переменные в prototype
.
function Hello() {};
(function () {
var greeting = "Hello";
Hello.prototype.greet = function () { return greeting };
}).apply(this);
Но даже если это возможно, обычно это лучше сделать ..
function Hello() {};
Hello.prototype.greeting = "Hello";
Hello.prototype.greet = function () { return this.greeting };