JavaScript - Свойство объекта как результат функции типа Array.length - PullRequest
1 голос
/ 17 апреля 2020

Я хочу создать свойство работы в результате функции, как Array.length или VideoElement.currentTime. Но я не хочу использовать его как вызов функции при использовании объекта.

Например:

var obj = {
   now : /* ??? */
}


console.log(obj.now)
Result : 2020-04-07 10:03:21

// 1 hours later
console.log(obj.now)
Result : 2020-04-07 11:03:21

// I don't want to implement like below:
console.log( obj.now() )

Как я могу это реализовать?

Ответы [ 3 ]

3 голосов
/ 17 апреля 2020

Превратите его в геттер вместо обычной функции:

const obj = {
  get now() {
    return new Date().toString();
  }
};

console.log(obj.now);

setTimeout(() => {
  console.log(obj.now);
}, 1000);
1 голос
/ 17 апреля 2020

Это можно сделать с помощью объекта получения :

const obj = {
  get now() {
    return Date.now()
  }
}

console.log(obj.now)
// logs: 15870XXXXXXXX
0 голосов
/ 17 апреля 2020

Сохраните результат функции и затем используйте:

Object.defineProperty() 

Мне нужно немного больше о том, что вы пытаетесь сделать.

Mozilla do c I ссылочный

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