Object.create () ES6 - PullRequest
       5

Object.create () ES6

0 голосов
/ 23 сентября 2018

Можете ли вы помочь мне понять ES6 и Объект?

class Contact{
       constructor(name,tel,mail)
       this.name=name;
       this.tel=tel;
       this.mail=mail; 

    method1(){
    //code
   }
}

Если я хочу создать контакт, я могу использовать

const me = new Contact('David','070809112','10 street of Paris')

Но я не могу использовать Object.create () до ES6 Я могу использовать Object.create () с ES6 Не можете ли вы помочь мне?

ДО ES6

var Contact ={
   init:function('name','tel','mail')
   this.name=name;
   this.tel=tel;
   this.mail=mail; 

method1 : function(){
  //code
 }
}
 var me = Object.create(Contact);
 me.init('David','070809112','10 street of Paris');

В этом случае Как использовать Object.create ()?для создания нового контакта.Спасибо

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете продолжать делать именно то, что делали, и не использовать class.

Если вы используете class, вы обычно не используете Object.create.Варианты использования для Object.create в основном не связаны с class (обычно он используется в прямом прототипическом наследовании, а не с использованием функций конструктора).

Если вы хотите использовать class, но не хотитеиспользуйте new по некоторым причинам, вы можете использовать Reflect.construct (вместо Object.create):

class Contact {
    constructor(name, tel, mail) {
        this.name=name;
        this.tel=tel;
        this.mail=mail; 
    }
    method1(){
     //code
    }
}

const c = Reflect.construct(Contact, ["name", "tel", "mail"]);
console.log(c.name);

Это можно использовать Object.create с вашим class Contact, например:

// NOT A GOOD IDEA, see below
const c = Object.create(Contact.prototype);

Это создаетобъект, использующий Contact.prototype в качестве прототипа.Но он не вызывает конструктор, и вы не можете вызвать конструктор позже (Contact.call(c, "name", "tel", "email") потерпит неудачу).И вы не могли быть уверены, что отказ от вызова конструктора не вызовет проблемы, поскольку код class предполагает, что вызывается конструктор (и суперконструкторы, если таковые имеются).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...