6by*_*tes 16 javascript console firefox firebug
一个非常简单的代码来说明差异.
var x = [0, 3, 1, 2];
console.debug('debug', x);
console.log('log', x);
// above display the same result
x.splice(1, 2);
// below display kind of a different result
console.debug('debug', x);
console.log('log', x);
alt text http://sixbytesunder.com/stuff/firebug_console.png
javascript值完全相同,但console.log()显示它与应用splice()方法之前有点不同.因为这个我失去了几个小时,因为我认为拼接是有趣的使我的阵列多维或其他东西.
我只是想知道为什么这样的工作.有人知道吗?:)
如果您查看文档,它会说:
控制台知道四种不同类型的消息,如下所述[...]
有关不同命令的更多信息,另请参阅Console API.
该页面上的外观显示在console.log:
如果记录了对象,它们将不是作为静态文本编写,而是作为交互式超链接编写,可以单击以检查Firebug的HTML,CSS,脚本或DOM选项卡中的对象.
所以,我认为在之前splice,数组在内部仍然是一个数组(我知道,它是一种对象),但在操作之后,你得到一个通用对象,至少在内部.我知道这是一个很弱的解释,但Firebug在控制台中有更奇怪的行为.
BTW,ECMAScript规范没有任何用处,但我们可以在关于Array.prototype.splice(§15.4.4.12)的部分中阅读:
该
splice功能是故意通用的; 它不要求它的this值是一个Array对象.因此,它可以转移到其他类型的对象以用作方法.splice函数是否可以成功应用于宿主对象取决于实现.
| 归档时间: | 
 | 
| 查看次数: | 7128 次 | 
| 最近记录: |