Как принять два параметра во встроенной функции конструктора в javascript - PullRequest
0 голосов
/ 09 июля 2020

вот этот код

// creating objects using builtin construcor functions
let account = new Function ('uname ' , `this.username=uname;
                        username = uname;
                        password = upass;
                        this.print = function(){
                            console.log(this.username, this.password);
                        }`);
let LoginAct = new account('deva', 'deva');
LoginAct.print();

Здесь я создал функцию-конструктор с именем account, используя встроенную функцию Function () . Теперь я хочу принять два параметра для объекта, где 1-й - uname , а второй - upass . Я попытался сделать это, написав что-то вроде этого: - let account = new Function ('uname ' , 'upass', `this.username=uname;...

А также вот так: - let account = new Function ('uname , upass', `this.username=uname;...

но это не сработало !, Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Ваша первая попытка (new Function('param1', 'param2', 'function body')) должна сработать. Проблема в том, что вы не устанавливаете this.password. Поэтому, когда вы звоните LoginAct.print() this.password, это undefined.

// creating objects using builtin construcor functions
let account = new Function ('uname', 'upass', `
  this.username = uname;
  this.password = upass; // <- set this.password
  this.print = function() {
    console.log(this.username, this.password);
  }
`);
let LoginAct = new account('deva', 'deva');
LoginAct.print();
0 голосов
/ 09 июля 2020

Мне нужен такой код

// creating objects using builtin construcor functions
let Account = function(uname, upass) {
  this.username = uname;
  this.password = upass;
  this.print = function() {
    console.log(this.username, this.password);
  }
};
let loginAct = new Account('deva', 'deva');
loginAct.print();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...