java mp3数组_学到Java中的Array数组时,你踩过多少坑?

检查数组类型

如果obj是一个数组,我们想做一些特定的事情。

JSON。

stringify就是一个例子,它以不同的方式输出数组给其他对象。

我们可以做的事:

但对于扩展数组来说,这是错误的:

如果你想捕捉子类,这里有instanceof:

但当你引入多个领域时,事情就变得更复杂了:

Multiple realms

域包含self引用的JavaScript全局对象。

因此,可以说在worker中运行的代码与在页面中运行的代码处于不同的领域。

iframes之间也是如此,但是同源iframes也共享一个ECMAScript“agent”,这意味着对象可以……(请阅读70年代科幻画外音的下一段)跨领域旅行。

接着看代码:

这两个都是错的,因为:

iframe有自己的数组构造函数,它与父页面中的构造函数不同。

Array.isArray

数组中。

对于数组,isArray将返回true,即使它们是在另一个域中创建的。

对于数组的子类,它也会返回true,来自任何域。

这就是JSON。

stringify内部使用。

但是,正如Allen所揭示的,这并不意味着arr有数组方法。

一些,甚至所有的方法都将被设置为undefined,或者数组的整个原型都将被删除:

不管怎样,如果要杜绝上述问题,可以通过Array原型调用Array的方法:

Symbols 与 realms

看看这个:

上面的log (1,2,3)非常普通,但是for-of循环通过调用arr[Symbol]来工作。

这在某种程度上是跨领域工作的。

方法如下:

每个领域都有自己的符号实例,符号。

iterator跨领域是相同的。

借用Keith Cirkel的一句话,符号同时是JavaScript中最独特和最不独特的东西。

The most unique 多唯一性

传递给符号函数的字符串只是一个描述。

这些符号是独一无二的,即使在同一领域内也是如此。

The least unique 最小唯一性

for(str)创建的符号与您传递给它的字符串一样惟一。有趣的是在各个领域都是一样的:

这就是Symbol.iterator大致的工作原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值