JavaScript — почему объекты не могут преобразовать в строку

В языках программирования я заметил, что объекты не могут быть преобразованы в строку. Почему они реализуют таким образом.

PHP

class abc {
public $Name;
public $Number;
function MrFunction() { /* bla bla bla */ }
}

$foo = new abc();

print_r($foo); //output - abc Object ( [Name] => [Number] => )
echo '<br>';
echo($foo); //output - Catchable fatal error: Object of class abc could not be converted to string on line 11

JS

var obj={a:1,b:2};
obj.toString() // output "[object Object]"

P.S — Я не хочу способ преобразования этих объектов в строку, я только хочу знать, почему объект не может преобразовать в строки

-2

Решение

В общем, когда вы печатаете один объект, как в первом примере, то на самом деле вы печатаете toString() метод объекта.

В PHP вы можете вручную переопределить __toString() метод в классе в следующем wat:

class abc {
public $Name;
public $Number;
function MrFunction() { /* bla bla bla */ }

function __toString() {
return $this->Name.' - '.$this->Number;
}
}

И тогда вы сможете выполнить echo new abc(),

PS: по договоренности, классы начинаются с прописных букв, а переменные с строчных. Поэтому было бы Abc, name а также number вместо abc, Name а также Number,

1

Другие решения

В JavaScript
Вам нужно использовать JSON.stringify,

var obj={a:1,b:2};
JSON.stringify(obj); // output "{"a":1,"b":2}"

В PHP Вам нужно использовать serialize

echo serialize($foo);
0

По вопросам рекламы [email protected]