JavaScript 类数组学习 练习

  • 可以利用属性名模拟数组的特性
  • 可以动态增长length属性
  • 如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充
var obj = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    'length': 3,
    'push': Array.prototype.push
}

obj.push('d'); 
console.log(obj); // {0: "a", 1: "b", 2: "c", 3: "d", length: 4, push: ƒ}
  • 类数组特点

属性要为索引(数字),必须要有length,最好加上push方法

// 如果加上splice属性 就长的和数组一样
var obj = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    'length': 3,
    'push': Array.prototype.push,
    'splice': Array.prototype.splice
}

obj.push('d'); 
console.log(obj); // Object(4) ["a", "b", "c", "d", push: ƒ, splice: ƒ]
  • 练习
var obj = {
    '2': 'a',
    '3': 'b',
    'length': 2,
    'push': Array.prototype.push
}

obj.push('c');  // 类数组的push方法是根据length来改变
console.log(obj); // {2: "c", 3: "b", length: 3, push: ƒ}

// 封装一个type 返回所有数据类型值
function type(target) {
    var template = {
        '[object Array]': 'array',
        '[object Object]': 'object',
        '[object String]': 'string -- object',
        '[object Number]': 'number -- object',
        '[object Boolean]': 'boolean -- object',
    }
    var ret = typeof target;
    if (target === null) {
        return 'null';
    } else if (ret === 'object') {
        var str = Object.prototype.toString.call(target);
        return template[str];
    } else {
        return ret;
    }
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值