javascript循环push 对象问题

查看:90
本文介绍了javascript循环push 对象问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

新手入门问题 不知道自己理解的对不对,请帮忙指点一下,谢谢。
最近在做的一个项目,需要循环push 一个对象,大致如下代码

var arr=[1,2,3,4,5,6,7];
    var newarr=[];
    var getarr= function () {
    //每次循环都push一次as对象
    var as={
                ss:""
            };
        for(i in arr){
            as.ss=arr[i];
            newarr.push(as);
        }
        console.log(newarr)
    };
    var btns=document.getElementById('Go');
    btns.addEventListener('click',getarr)

这种最后结果输出的都是最后一次循环的值,

这是调整过后的

var arr=[1,2,3,4,5,6,7];
    var newarr=[];
    var getarr= function () {
        for(i in arr){
            var as={
                ss:""
            };
            as.ss=arr[i];
            newarr.push(as);
        }
        console.log(newarr)

    };
    var btns=document.getElementById('Go');
    btns.addEventListener('click',getarr)

我的理解是 都是push 对象,但第一种声明在前,也就是说每次赋值,然后push是同一个对象,
第二种是 每次循环push的是名字相同的不同对象。不知道这种理解对不对。
刚开始我还以为是闭包问题,新手上路 多多指教。

解决方案

不是因为什么闭包,你先看一下什么是 基本类型 什么是 引用类型 ,大致就跟你说的一样。
第一段错误就是每次其实都是给同一个对象赋值,第二个是每次都新建一个对象并且赋值。

这篇关于javascript循环push 对象问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆