Привет всем! Прохожу тему "Преобразование объектов к примитивам". Прошу ответить на следующие вопросы:
let obj1 = {
name: 100,
valueOf() {return this.name},
};
$('#b1').append( '1: ' + typeof obj1 ); // Почему выводит object?? Ведь такого типа нет, есть [object Object]
console.log(typeof obj1); // object
/////////////////////////////////////////////////////////
let obj2 = {
name: 'John',
valueOf() {return this[0]},
};
$('#b2').append( '2: ' + typeof obj2 ); // Почему выводит object? Ведь такого типа нет, есть [object Object]
console.log(typeof obj2); // object
/////////////////////////////////////////////////////////
let obj3 = {
name: 1,
toString() {return this.name},
};
$('#b3').append( '3: ' + obj3 + 1 ); // Почему выводит 2 в console.log, а не 11, а в append 11 ??
console.log(obj3 + 1); // 2
/////////////////////////////////////////////////////////
let obj4 = {
name: 1,
valueOf() {return 'xxx'},
toString() {return 'yyy'},
};
$('#b4').append( '4: ' + obj4 + 1 ); // Почему выводит xxx1 ? Ведь 'xxx' - это строка
console.log(obj4 + 1); //xxx1
/////////////////////////////////////////////////////////
let obj5 = {
name: 1,
valueOf() {return 'xxx'},
toString() {return 'yyy'},
};
let akr = obj5.toString();
$('#b5').append( '5: ' + akr ); // А тут почему выводит yyy методом alert() и append jQuery, а в console.log выводит {name: 1, valueOf: ƒ, toString: ƒ} ?
console.log(obj5 ); /* Object
name: 1
toString: ƒ toString()
valueOf: ƒ valueOf()
__proto__: Object */
/////////////////////////////////////////////////////////
let obj6 = {
name: 'John',
valueOf() {return 'xxx'},
toString() {return 'yyy'},
};
$('#b6').append( '6: ' + obj6 + 'John' ); // А тут почему выводит xxxJohn ? Тут же есть строка 'John', должен дёргать метод toString()
console.log(obj6 + 'John' ); // xxxJohn
/////////////////////////////////
let obj7 = {
name: 'John',
valueOf() {return true},
toString() {return 'yyy'},
};
$('#b7').append( '7: ' );
$('#b7').append( obj7 + 1 ); // 2
console.log(obj7 + 1 ); // 2
/////////////////////////////////
let obj8 = {
toString() {return 'yyy'},
};
$('#b8').append( '8: ' );
$('#b8').append( obj8 ); // Почему здесь пустота? Почему не преобразует в примитив?
console.log( obj8 ); // Почему выводити объект? {valueOf: ƒ, toString: ƒ}