为什么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
方法,它可以做完全不同的事情。它们不显示其类型,而是显示其内容,并用逗号连接。如果愿意,可以替换arraystoString
方法:
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
方法,它可以做完全不同的事情。它们不显示其类型,而是显示其内容,并用逗号连接。如果愿意,可以替换arraystoString
方法:
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当它用于预期的文本时。你能给我一个关于这篇文章的参考吗?我找到的第一篇文章实际上是,但也会说你能给我一个关于这篇文章的参考吗?我发现的第一篇文章实际上是,但也谈到了它。