Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么document.write()和alert()方法呈现JavaScript对象的方式不同?_Javascript - Fatal编程技术网

为什么document.write()和alert()方法呈现JavaScript对象的方式不同?

为什么document.write()和alert()方法呈现JavaScript对象的方式不同?,javascript,Javascript,打印数组和对象时,document.write()方法和window.alert()之间有什么区别 此代码示例中显示了不同的行为: var arr = new Array("Maizere","Pathak"); document.write(arr); // output: Maizere,Pathak alert(arr); // output: maizere,pathak 为什么他们都要打印这些值?不应该打印对象对象吗 使用DOM对象,它打印[object HTML collecti

打印数组和对象时,
document.write()
方法和
window.alert()
之间有什么区别

此代码示例中显示了不同的行为:

var arr = new Array("Maizere","Pathak");

document.write(arr); // output: Maizere,Pathak
alert(arr); // output: maizere,pathak
为什么他们都要打印这些值?不应该打印对象对象吗


使用DOM对象,它打印[object HTML collection],在这里它打印值。

JavaScript中的对象有一个
toString
方法。只要以预期文本的方式使用对象,就会调用此方法。例如,以下输出
[object object]

alert({});
数组有自己版本的
toString
方法,它可以做完全不同的事情。它们不显示其类型,而是显示其内容,并用逗号连接。如果愿意,可以替换arrays
toString
方法:

var names = ['Jonathan', 'Sampson'];

names.toString = function () {
    return this.length;
};

alert(names); // Outputs 2
document.toString.call(names); // [object Array]
如果您愿意,也可以使用其他的
来实现字符串

var names = ['Jonathan', 'Sampson'];

names.toString = function () {
    return this.length;
};

alert(names); // Outputs 2
document.toString.call(names); // [object Array]

有关更多信息,请参阅。

JavaScript中的对象具有
toString
方法。只要以预期文本的方式使用对象,就会调用此方法。例如,以下输出
[object object]

alert({});
数组有自己版本的
toString
方法,它可以做完全不同的事情。它们不显示其类型,而是显示其内容,并用逗号连接。如果愿意,可以替换arrays
toString
方法:

var names = ['Jonathan', 'Sampson'];

names.toString = function () {
    return this.length;
};

alert(names); // Outputs 2
document.toString.call(names); // [object Array]
如果您愿意,也可以使用其他的
来实现字符串

var names = ['Jonathan', 'Sampson'];

names.toString = function () {
    return this.length;
};

alert(names); // Outputs 2
document.toString.call(names); // [object Array]

有关更多信息,请参见。

警报
文档。写入
设置为使用
.toString()
方法。对于类型为
object
的实例,通常打印
[对象对象]
。但是,Array类重载了此方法以打印数组的内容。尝试执行
arr.toString()
,以显示实际情况。如果您创建一个对象并给它一个toString方法,它将被调用以发出警报。例如:

var obj = {};
obj.toString = function() { return "I'm an Object!"; }
alert(obj);

将显示一个带有字符串“我是一个对象!”的警报。

警报
文档。写入
设置为使用
.toString()
方法。对于类型为
object
的实例,通常打印
[对象对象]
。但是,Array类重载了此方法以打印数组的内容。尝试执行
arr.toString()
,以显示实际情况。如果您创建一个对象并给它一个toString方法,它将被调用以发出警报。例如:

var obj = {};
obj.toString = function() { return "I'm an Object!"; }
alert(obj);

将显示带有字符串“我是对象!”的警报。

document.write和window.alert方法都使用字符串,因此将使用Array.toString方法从数组生成字符串值


toString方法从不同类型的对象生成的内容可能因浏览器而异,但document.write和window.alert使用相同的方法生成字符串时,您将从中获得相同的结果。

document.write和window.alert方法都使用字符串,因此,将使用Array.toString方法从数组中生成字符串值


toString方法从不同类型的对象生成的内容可能因浏览器而异,但document.write和window.alert的结果是相同的,因为它们使用相同的方法生成字符串。

扩展Jonathan Sampson的答案,并给出一点想法

var names = ['Jonathan', 'Sampson'];
names.toString = function () {return 0;};
names.valueOf = function () {return 1;};

console.log(names + ""); // 1 or 0 ? What do you think.
console.log(names.toString()); // 1 or 0 ? What do you think.¨
alert( names );

延伸乔纳森·桑普森的答案,并给出一点心碎

var names = ['Jonathan', 'Sampson'];
names.toString = function () {return 0;};
names.valueOf = function () {return 1;};

console.log(names + ""); // 1 or 0 ? What do you think.
console.log(names.toString()); // 1 or 0 ? What do you think.¨
alert( names );

警报(arr)效果很好,两个似乎都有相同的结果,看一看@Sachin我已经编辑了我的帖子
“[对象类型]”
你提到的就是这个。子类型可以选择定义自己的
toString()
。和
Array
,定义它们的字符串表示形式等同于调用
join()
。alert(arr)它工作正常这两种方法似乎有相同的结果,看看@Sachin我编辑了我的帖子你提到的
“[对象类型]”
。子类型可以选择定义自己的
toString()
。和
Array
,定义它们的字符串表示形式等价于调用
join()
。进行类型转换所需的条件/环境是什么?@Maizere当它用于预期的文本时。进行类型转换所需的条件/环境是什么?@Maizere当它用于预期的文本时。你能给我一个关于这篇文章的参考吗?我找到的第一篇文章实际上是,但也会说你能给我一个关于这篇文章的参考吗?我发现的第一篇文章实际上是,但也谈到了它。