深入了解Js中的对象

这篇具有很好参考价值的文章主要介绍了深入了解Js中的对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在JavaScript中,对象是个无序的键值对数据集。例如:

  var xiaoqiang={
      name:"wangqiang",
      age:30,
      city:"guangzhou",
      job:"engineer"
  }

上述例子中的小强是一位年轻人,对于这个对象我们用一个括号进行定义。在括号体内我们描述了这个人的几种属性:姓名、年龄、所在城市,工作等。 每一个属性对应一个值,形成了一个数据集。

对象属性的访问、添加、删除

我们可以通过点操作符访问一个对象的属性,访问小强的姓名可以用xiaoqiang.name,也可以用方括号的方式xiaoqiang["name"]的方式。还可以动态添加一个属性, 动态删除一个属性。例如:

  xiaoqiang["name"];    //返回wangqiang
  xiaoqiang.name;       //返回wangqiang
  xiaoqiang.height;     //undefined
  xiaoqiang.height = 1.8  // 给xiaoqiang动态添加了一个属性
  delete xiaoqiang.height;

我们还可以通过Object的静态方法defineProperty动态地给一个对象添加属性。下面的例子,我们动态地给xiaoli对象添加一个name属性:

  xiaoli = {};
  Object.defineProperty(xiaoli,"name",{
      value:"xiaoli",
      writable:false,  // 属性不能修改,
      enumerable:true, // 属性可枚举,如:可以通过for ( let item of Object.entries(xiaoli)){...} 的方式枚举属性
  })

对象属性的测试

通过in关键字测试对象中的属性,也可以通过Object的hasOwn方法测试对象属性。一个对象的属性包括自有属性和继承来的属性。

  "name" in xiaoqiang;    //true;
  "toString" in xiaoqiang;  //true 通过object对象继承的属性
  xiaoqiang.hasOwnProperty("age") //true age是xiaoqiang自己的属性
  xiaoqiang.hasOwnProperty("toString")//false 通过继承自object的属性,不算自己的属性
  Object.hasOwn(xiaoqiang,"age");  //true Object的静态方法判断是否是自己的属性
  Object.hasOwn(xiaoqiang,"toString"); //false
  Object.getOwnPropertyNames(person);  //获取所有自身的属性名称

特殊情况

在定义一个对象时,对象属性的键是字符串类型,一般情况下可以省略单引号或双引号。如果键中包含特殊的字符,那就必须带上双引号或单引号,例如:

  var xiaoqiang={
      name:"wangqiang",
      age:30,
      city:"guangzhou",
      job:"engineer",
      "company-address":"tianhe district,guangzhou" // company-address要加引号
  }
  xiaoqiang["company-address"]  

上述对象xiaoqiang的company-address属性带有特殊的符号,所以定义的时候需用引号包裹起来,在进行属性访问的时候需用方括号

对象属性以及值的遍历

使用Object的entries方法,然后进行遍历

  var xiaoqiang={
      name:"wangqiang",
      age:30,
      city:"guangzhou",
      job:"engineer",
      "company-address":"tianhe district,guangzhou" // company-address要加引号
  }
  //对象属性的遍历。
  for (let item of Object.entries(xiaoqiang)){
      console.log(item[0],item[1]);
  }

使用Object的keys方法和values方法,然后进行遍历

  var xiaoqiang={
      name:"wangqiang",
      age:30,
      city:"guangzhou",
      job:"engineer",
      "company-address":"tianhe district,guangzhou" // company-address要加引号
  }
  //对象键的遍历。
  for (let item of Object.keys(xiaoqiang)){
      console.log(item);
  }
  //对象值的遍历。
  for (let item of Object.values(xiaoqiang)){
      console.log(item);
  }

对象的冻结、密封、不可扩展

冻结对象:一个冻结对象是指已经不能添加新属性、删除现有属性或修改已有属性的值的对象。使用 Object.freeze() 方法可以将对象转换为冻结对象。

  var lihong={};
  lihong.name="lihong";
  lihong.age=20;
  Object.freeze(lihong);
  lihong.height = 171;  //height属性添加不成功
  delete lihong.age;    //age属性删除不成功
  lihong.name = "Lihong"; //age属性修改不成功

密封对象:一个密封对象是指已经不能添加新属性和删除现有属性的对象,但是可以修改已有属性的值。使用 Object.seal() 方法可以将对象转换为密封对象。

  var lihong={};
  lihong.name="lihong";
  lihong.age=20;
  Object.seal(lihong);
  lihong.height = 171;  //height属性添加不成功
  delete lihong.age;    //age属性删除不成功
  lihong.name = "Lihong"; //name属性可修改的

不可扩展对象:一个不可扩展对象是指已经不能添加新属性的对象,但是可以修改现有属性的值或删除现有属性。使用 Object.preventExtensions() 方法可以将对象转换为不可扩展对象。

  var lihong={};
  lihong.name="lihong";
  lihong.age=20;
  Object.preventExtensions(lihong);
  lihong.height = 171;  //height属性添加不成功
  delete lihong.age;    //age属性是可删除的
  lihong.name = "Lihong"; //name属性是可修改的

文章同时发表在:码农编程网 欢迎访问

本节重点文章来源地址https://www.toymoban.com/news/detail-454442.html

  • 对象是一个无序键值对的数据集;
  • 对象的属性必须是字符串、如包含特殊的字符引号包裹起来;
  • 对象属性的添加、测试、对象属性和值的遍历;
  • 冻结对象、密封对象、不可扩展对象。

到了这里,关于深入了解Js中的对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入JVM了解Java对象实例化过程

    new :最常见的方式、 Xxx 的静态方法, XxxBuilder/XxxFactory 的静态方法 Class的newInstance 方法:反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance(XXX) :反射的方式,可以调用空参、带参的构造器,权限没有要求 使用 clone() :不调用任何的构造器,要求当

    2023年04月24日
    浏览(39)
  • 【c++】类和对象(四)深入了解拷贝构造函数

    🔥 个人主页 :Quitecoder 🔥 专栏 :c++笔记仓 朋友们大家好啊,本篇内容带大家深入了解 拷贝构造函数 拷贝构造函数是一种特殊的构造函数,在对象需要以同一类的另一个对象为模板进行初始化时被调用。它的主要用途是初始化一个对象,使其成为另一个对象的副本 我们先

    2024年04月16日
    浏览(68)
  • 11.初始JavaScript[初步了解何为js]

    大家好,我是晓星航。今天为大家带来的是 JavaScript的简单介绍 相关的讲解!😀 JavaScript (简称 JS) 是世界上最流行的编程语言之一 是一个脚本语言, 通过解释器运行 主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行. JavaScript 最初只是为了完成简单的表单验

    2024年02月08日
    浏览(48)
  • 【Java 基础篇】Java反射:深入了解Class对象

    Java是一门强类型语言,它要求在编译时知道所有的类和对象类型。然而,有时候我们需要在运行时动态地获取和操作类的信息,这就是Java反射的用武之地。本文将深入探讨Java反射,特别是与Class对象相关的内容。 反射是一种机制,允许我们在运行时检查、获取和操作类的信

    2024年02月06日
    浏览(50)
  • 【c++】类和对象(六)深入了解隐式类型转换

    🔥个人主页 : Quitecoder 🔥 专栏 : c++笔记仓 朋友们大家好,本篇文章我们来到 初始化列表,隐式类型转换以及explicit的内容 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是

    2024年04月13日
    浏览(50)
  • JavaScript:js数组/对象遍历方法

    一、js遍历方法 序号 方法 描述 1 for 使用最基本的for循环可以遍历数组 2 for of for...of语句用来遍历可迭代对象(包括数组、Set、Map、字符串等),它可以替代传统的for循环和forEach()方法。for...of循环每次迭代都将返回一个值,而不是索引。 3 for in for...in语句用来遍历对象的可

    2024年02月09日
    浏览(56)
  • 11.与JavaScript深入交流-[js一篇通]

    大家好,我是晓星航。今天为大家带来的是 JavaScript语法描述 相关的讲解!😀 创建变量(变量定义/变量声明/变量初始化) var 是 JS 中的, 表示这是一个变量. = 在 JS 中表示 “赋值”, 相当于把数据放到内存的盒子中. = 两侧建议有一个空格 每个语句最后带有一个 ; 结尾

    2024年02月06日
    浏览(36)
  • 进阶JAVA篇-深入了解 Stream 流对象的创建与中间方法、终结方法

    目录         1.0 Stream 流的说明         2.0 Stream 流对象的创建         2.1 对于 Collection 系列集合创建 Stream 流对象的方式         2.2 对于 Map 系列集合创建 Stream 流对象的方式         2.3 对于数组创建 Stream 流对象的方式         3.0 Stream 流的中间方法      

    2024年02月08日
    浏览(38)
  • javascript基础二十一:说说你对BOM的理解,常见的BOM对象你了解哪些?

    一、是什么 BOM (Browser Object Model),浏览器对象模型,提供了独立于内容与浏览器窗口进行交互的对象 其作用就是跟浏览器做一些交互效果,比如如何进行页面的后退,前进,刷新,浏览器的窗口发生变化,滚动条的滚动,以及获取客户的一些信息如:浏览器品牌版本,屏幕分

    2024年02月07日
    浏览(42)
  • 深入了解Webpack:特性、特点和结合JS混淆加密的实例

    1. 模块化管理 Webpack支持将项目拆分为多个模块,允许开发者以模块化的方式组织代码。每个模块都有自己的依赖关系,Webpack能够自动解析这些依赖,从而构建出一个整体的资源文件。 2. 加载器和插件 Webpack使用加载器(Loaders)处理不同类型的文件,如JavaScript、CSS、图片等

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包