2021-03-29【技术】关于console.log中一个有趣的事情

首先让我们来看

let book1={"author":"author111","subname":"subname222","main":"main333","title":"title444"} 
book.author333="3333"; 
console.log( Object.keys(book1).length)
book.subname444="444"; 
console.log( Object.keys(book1).length)
book["title555"]="555";
console.log( Object.keys(book1).length)
运行结果

但是,当我们依次点开console.log时,会发现


点开console.log

两个对象,显示出来的属性不一样多,但是点进去之后属性是一样的。这个怎么解释?
因为
console.log只是输出一个对象的引用,鼠标点开的时候,会去内存里取这个引用,取到的是最后的值。
在控制台中我们点击的consoel.log的是同一个变量,所以log出来的是同一个对象的引用。

与这个问题类似的是 js深复制和浅复制,一个是内存引用, 一个是地址引用。

在实际开发过程中,我们可以根据不同逻辑下对于数据长度的检测来判断内容是否被修改。
对于数组、字符串来说,可使用
var s = "String 类型长度"; //定义字符串
console.log(s.length); //返回11个字符

let age1=["222","333","333","12323"];
console.log(age1.length) // 4
但是对于对象来说,就不能直接使用Length来获取长度。
var book1={"author":"author111","subname":"subname222","main":"main333","title":"title444"}
console.log( Object.keys(book1).length); //4

因此,对于文章最开始的例子来说,将其console.log()代码修改为如下即可:

let book={"author":"author111","subname":"subname222","main":"main333","title":"title444"} 
book.author333="3333"; 
console.log( Object.keys(book).length)
book.subname444="444"; 
console.log( Object.keys(book).length)
book["title555"]="555";
console.log( Object.keys(book).length)
修改后

再拓展一下,有兴趣的可以去看看。

JavaScript Console 那些少人所知的特性

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,832评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,685评论 0 3
  • 实习的时候写的学习笔记 如有错误请各位大佬直接留言批判,防止错误的信息会误导他人! ---------------...
    ci鱼丸粗面阅读 583评论 0 0
  • [if !supportLists]第一章 [endif]介绍 [if !supportLists]一、[endi...
    海绵宝宝_b8a2阅读 362评论 0 0
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,608评论 1 37

友情链接更多精彩内容