blingzo 发表于 2019-11-13 15:49

javaScript中的 delete 使用问题求助

今天在看视频,视频演示使用delete 代码及效果如图


我也自己在跟着写,但是效果却不一样,百度也没搜到有效信息,就想请教一下各位,麻烦解疑答惑

xiaotao921 发表于 2019-11-13 16:05

是删除 01 里的年龄

zhuangxy 发表于 2019-11-13 16:07

本帖最后由 zhuangxy 于 2019-11-13 16:14 编辑

{:301_1004:}你运行第一部分,输出结果会和第一部分的输出结果一样(有age属性),然后运行第2部分,第2部分输出结果同视频一样,但你会发现已经输出的第一部分结果变掉了,有的浏览器是不变的,可能和运行环境有关

落幕‘ 发表于 2019-11-13 16:08

注意看一下格式,有些地方需要用逗号 有些不用

Mrain22 发表于 2019-11-13 16:09

因为他们是同一个对象,在Chrome控制台输出的是这个对象的地址引用。你把它输出到的页面上就对了,视频中的如果展开,效果和你的是一样的。

XXXXXMY 发表于 2019-11-13 16:12

应该要先打开控制面板,刷新一下,就会看到跟视频一样的效果了

guguxuan 发表于 2019-11-13 16:18

Javascript 中 Object 是引用数据类型,区别于基本数据类型(存放在栈中的简单数据段,数据大小确定,内存空间大小可以分配,它们是直接按值存放的,所以可以直接按值访问),它的数据保存在堆中,地址保存在栈中。两个console.log虽然在不同的位置打印了o1,但是指向了同一个堆内存对象,只要一有修改,所有用到的地方都会改变。如果要打印出你期望的结果可以这么写
var o1 = {
      name: "路飞",
      age: 15,
      sex: "男",
    }
    console.log(JSON.parse(JSON.stringify(o1)))
    delete o1.age
    console.log(o1)

ss63551234ss 发表于 2019-11-13 16:28

一样的。

wysheep 发表于 2019-11-13 16:39


使用 谷歌浏览器 的 console 写的,是可以的

池中金麟 发表于 2019-11-13 16:42

我刚才试了一下,一开始用浏览器打开文件,不开启控制台,等代码运行完成再打开控制台,看到的效果确实跟你的一样。但是如果你在开启控制台的情况下刷新页面,是会看到正常代码效果的。具体原理可能跟浏览器的内部机制有关系,不懂。
页: [1] 2
查看完整版本: javaScript中的 delete 使用问题求助