Как я могу создать объект, например, строку? Объект со многими свойствами и значением по умолчанию console.log /valuation - PullRequest
1 голос
/ 25 октября 2019

Я хочу создать объект со многими свойствами, но когда я просто console.log моего объекта или вставляю его в оценку, он имеет значение по умолчанию для оценки или записи, примитивное значение, например, «test»,например.

Я пытался использовать геттеры и сеттеры, но безуспешно.

const obj = { a: 'test1', b: 'test2' } // this is my object

console.log(obj.a); // this should return 'test1'

console.log(obj); // this should return a value of my choice, like 'testobj' or a number

'testobj' === obj; // should be true, since I want my obj to have a default value of 'testobj' in evaluations
// just like a primitive type, like strings or numbers. They have many functions and a default value

1 Ответ

0 голосов
/ 25 октября 2019

Когда объект обрабатывается как строка, среда выполнения JavaScript будет проверять, имеет ли он метод toString(), и будет возвращать то, что указывает этот метод. Если нет toString(), то обычно вы увидите [object Object]. Кроме того, для создания базового примитива присвойте объекту значение valueOf.

Кроме того, при создании объектов, которые будут использоваться таким образом, используйте функции конструктора, а не литералы объектов.

const objA = function(){ this.a= 'test1'; this.b= 'test2' }
let instA = new objA();
console.log(instA.toString());

const objB = function() { 
  this.a= 5; 
  this.b= 'test2'; 
  this.toString= function(){ return this.a; };
  this.valueOf = function() { return this.toString(); }; 
}
let instB = new objB();
console.log(instB.toString());
console.log(instB + 2); // Get the primitive and work with that
...