javascript - 数组原声方法中的一段代码
ringa_lee
ringa_lee 2017-05-16 13:25:11
[HTML讨论组]

var t = Object([1,2,3]);
var len = t.length >>> 0;
这段代码什么意思?数组为什么要被转换成对象 这个意思转换成类数组的意思吗

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
怪我咯
Object([value])用法及功能:
- 如果value为基元数据类型Boolean、Number、String,则返回对应类型的对象,例如:Boolean对象、Number对象、String对象。
- 如果value本身为对象,则不对其作任何更改,返回其本身。
- 如果省略了value参数,或value为null、undefined,则返回自身无任何属性的Object对象。

var t = Object([1,2,3]);
console.log(t===[1,2,3]); // false
上面的代码中,value=[1,2,3],此时[1,2,3]并不是一个数组,因为它既没有new Array, 又没有对象字面量赋值,并不算是一个array,而Object([1,2,3]) 可以将其转化为数组对象,所以打印t===[1,2,3]为false。

再看下面:
var a = [1,2,3];
var t = Object(a);
console.log(a,typeof a, Array.isArray(a),t,typeof t, Array.isArray(t),t===a, t===[1,2,3]); 
// [1, 2, 3] "object" true [1, 2, 3] "object" true true false

因为a = [1,2,3]定义了一个字面量数组,而数组也是对象,所以匹配到了第二条,返回了它本身,所以此时a===t。


t.length >>> 0; 
上面的代码中,把t.length这个值改为二进制,然后像又移了0位,也是没有任何意义的。
可能是因为没有上下文,单纯两行代码只能看出这么多了。
PHPz

代码应该还有吧,不因该就这两句吧?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号