V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jamfer
V2EX  ›  问与答

JS 的一个赋值问题

  •  
  •   jamfer · 2022-11-26 21:14:29 +08:00 · 841 次点击
    这是一个创建于 730 天前的主题,其中的信息可能已经有所发展或是发生改变。
    var maps = [];
    如果写
    maps[0].img = new Image();
    会报错 Uncaught TypeError: Cannot set properties of undefined

    如果是
    maps[0] = new Image();
    就不会报错,但这个不是我要的,请问要怎么做才能让第一个方案不报错?
    eason1874
        1
    eason1874  
       2022-11-26 21:16:02 +08:00
    maps[0] = {img: new Image()}
    cpstar
        2
    cpstar  
       2022-11-26 21:19:39 +08:00
    maps[0]=undefined
    所以你猜 undefined 的 img 会是什么?
    westoy
        3
    westoy  
       2022-11-26 21:55:25 +08:00
    用 Proxy 代理一下
    imicksoft
        4
    imicksoft  
       2022-11-26 21:56:18 +08:00
    你没有给数组填充东西,就想操作数组的第一个元素?
    imicksoft
        5
    imicksoft  
       2022-11-26 22:01:51 +08:00
    var maps = [];//创建了个数组
    maps[0].img = new Image();//给数组的第一个元素的添加一个 img ,但此时 maps 没有数据啊
    maps[0] = new Image();//给数据的第一个元素赋值 image 对象,这个是向数组里添加元素


    你操作失败,相当你想开旅馆,刚注册了空公司,还没有租房子,就想改房子的装潢,办不到啊,无对象啊。
    gauzung
        6
    gauzung  
       2022-11-26 22:05:33 +08:00
    maps[0]是 undefined ,不能给 undefined 设置属性,即「 Cannot set properties of undefined 」

    改正:
    maps[0] = {};
    maps[0].img = new Image();
    HugoChao
        7
    HugoChao  
       2022-11-26 22:09:02 +08:00
    你不能在声明变量之前使用变量
    qiaobeier
        8
    qiaobeier  
       2022-11-26 22:15:13 +08:00
    你这是逻辑问题,不是代码问题。任何语言都不可能对不存在的对象赋值。
    Rache1
        9
    Rache1  
       2022-11-26 22:26:30 +08:00
    @qiaobeier PHP:一切皆有可能 😏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1598 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:57 · PVG 00:57 · LAX 08:57 · JFK 11:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.