Javascript 为什么对象不能转换为字符串
在编程语言中,我注意到对象不能转换为字符串。为什么他们以这种方式实施 phpJavascript 为什么对象不能转换为字符串,javascript,php,language-agnostic,Javascript,Php,Language Agnostic,在编程语言中,我注意到对象不能转换为字符串。为什么他们以这种方式实施 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>'; ech
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
p.S-我不想把这些对象转换成字符串,我只想知道为什么在javascript中对象不能转换成字符串。
您需要使用JSON.stringify
var obj={a:1,b:2};
JSON.stringify(obj); // output "{"a":1,"b":2}"
在PHP中。您需要使用序列化
echo serialize($foo);
通常,当您像第一个示例中那样直接打印一个对象时,实际打印的是对象的
toString()
方法
在PHP中,您可以手动重写类中的\uuuu toString()
方法,如下所示:
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
为什么要转换它?您不能回显对象。无法回显对象的原因是什么。您必须首先转换它。php可以回送变量、数组等,。。。。那些不是弦。那么为什么不能回送对象回送数组呢?如何在php中echo
数组??对象无法转换为字符串的原因是什么?其他数据类型可以…例如varible、array…。可以转换为string可以转换,但必须手动指定它们的转换方式,覆盖或定义toString方法。
class abc {
public $Name;
public $Number;
function MrFunction() { /* bla bla bla */ }
function __toString() {
return $this->Name.' - '.$this->Number;
}
}