目录

一. 对象的基本用法

二. 遍历对象

三. 属性的类型

1. 数据类型

2. 访问浏览器属性

3.定义多个属性

4. 检测属性

5. 对象安全防护(对象拓展,对象密封,对象冻结)

四.对象在实际应用中的表现


概念:对象以键值对的形式存储数据。键也就是对象的属性,值就是一个具体的数据。

一. 对象的基本用法

// 通过Object方式创建
let person = new Object();
person.name = "小黑";
person.age = 22;
person.job = "software Engineer";
person.sayName = function () {console.log(this.name);   //this指当前对象
}person.sayName();   //调用person  实例的方法//通过对象字面量的方式调用
let person = {name:"小黑",age 22,job:"software Engineer",sayName(){console.log(this.name);}
}//通过  对象名.属性  的方式调用
console.log(person.name);
person.sayName();//通过  对象名['属性'] 的方式调用
console.log(person['name']);//修改数据
person.name = "小红";
console.log(person.name);  // 小红//删除数据项
delete person.name;  //总结:对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值(键值对)   常用于保存多种数据类型

二. 遍历对象

//遍历对象
let obj = {name:"鲁班",age:18,job:"teacher"
}//遍历对象  (for in)
for(let i in obj){     //i 表示keyconsole.log(obj[i]);
}

三. 属性的类型

1. 数据类型

Configurable:表示属性是否可以通过delete删除并重新定义,是否可以修改它的特性, 默认情况是true

Enumerable:表示属性是否可以通过 for-in 循环返回。默认情况下,所有直接定义在对象上的属性这个特性都是true

Writable:表示属性的值是否可以被修改,默认情况下 值为true

Value:包含属性实际的值,默认值为undefined

// Object.defineProperty();方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。//writable
let obj = {};Object.defineProperty(obj,"name",{value:"德玛",writable:true     //为true时表示可以被修改
})
obj.name = "德玛西亚";
console.log(obj);// configurable
let obj = {};Object.defineProperty(obj,"age",{value:20,configurable:true   //为true时表示可以被删除
})
delete obj.age;
console.log(obj)//enumerable 可枚举
let obj = {};Object.defineProperty(obj,'name',{enumerable:false,value:'鲁班'
})Object.defineProperty(obj,'age',{enumerable:true,value:20
})Object.defineProperty(obj,'job',{enumerable:true,value:"coder"
})console.log(obj);for(let i in obj){console.log(obj[i]);  //20,coder    name属性不可枚举
}

2. 访问浏览器属性

Get:获取函数,在读取属性时调用,默认值为undefined。

set:设置函数,在写入属性时调用,默认值为undefined.

let obj = {};
Object.defineProperty(obj,'name',{get(){return this.Myname;},set(newValue){this.Myname  = newValue;}
})obj.name = "小橘";console.log(obj.name);

3.定义多个属性

 let info = {};Object.defineProperties(info,{name:{value:"小橘"},age:{value:20},job:{value:"teacher"}})console.log(info);

4. 检测属性

  // in操作符   判断当前的属性是不是存在于对象中。let obj = {myName:'小橘'};console.log('myName' in obj);   //true    myName属于 obj中的属性console.log('age' in obj);   //false   age不属于obj的属性// hasOwnProperty    测试当前属性是不是对象的自有属性let obj = {myName:'小橘',age:20};console.log(obj.hasOwnProperty("myName"));console.log(obj.hasOwnProperty("job"));// 区别let obj = {myName:'小橘',age:20};Object.prototype.sayName = "hello world";console.log('sayName' in obj);  //trueconsole.log(obj.hasOwnProperty('sayName')); //false  只能测试当前属性是不是对象的自有属性

5. 对象安全防护(对象拓展,对象密封,对象冻结)

//阻止对象拓展(阻止拓展)     可以通过Object.isExtensible(对象名)  来检测一下这个对象是否是可拓展的
let obj = {myName:"小橘"};
Object.preventExtensions(obj);
obj.age = 18;  //undefined  添加不了  console.log(obj);  //{myName: "小橘"}//--->过渡let obj = {myName:"小橘"};
Object.preventExtensions(obj);
delete obj.myName;console.log(obj); //可以删除   preventExtensions可以阻止拓展 不能阻止删除//对象密封(阻止拓展,阻止删除)   可以通过Object.isSealed(对象名)  来判断这个对象是否已经密封
let obj = {myName:"小橘"};
Object.seal(obj);obj.age = 18;
console.log(obj); //{myName: "小橘"}
delete obj.myName;
console.log(obj); //{myName: "小橘"}//--->过渡
let obj = {myName:"小橘"};Object.seal(obj);obj.age = 18;console.log(obj); //{myName: "小橘"}delete obj.myName;console.log(obj); //{myName: "小橘"}   obj.myName = "小橘橘橘子";console.log(obj);  //{myName: "小橘橘橘子"}   //对象属性依然可以修改//对象冻结(这是最严格的防篡改级别,冻结的对象即不可扩展,又密封,且不能修改)
let obj = {myName:"小橘"};
Object.freeze(obj);obj.age = 18;   //不能添加 console.log(obj); //{myName: "小橘"}delete obj.myName;  //不能删除console.log(obj);  //{myName: "小橘"}obj.myName = "小橘橘橘子";   //不能修改 console.log(obj);  //{myName: "小橘"}

四.对象在实际应用中的表现

 let obj = [{id:001,title:"火影忍者",amount:30,status:false},{id:002,title:"海贼王",amount:40,status:true},{id:003,title:"三国演义",amount:20,status:false},{id:004,title:"西游记",amount:50,status:false}]obj.forEach(function(item,value){   console.log("编号:"+item.id+"---书名:"+item.title+"---价格:"+item.amount+"---是否有货:"+item.status);   })

JavaScript 对象字面量相关推荐

  1. JavaScript基础07-day09【嵌套for循环、break和continue、对象、数据类型、对象字面量、函数】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  2. 字面量、对象字面量、函数字面量、函数定义

    #1.字面量(literal) 用于表达一个固定值的表示法,又叫常量. [JS程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少] #2.对象字面量 语法: {k1:v1, k2:v2, ...

  3. 学习新对象字面量语法

    目标 使用简写属性名称 使用简写方法名称 使用计算属性名称 问题 哪些部分是冗余的? const person={name:name,address:address,sayHello:function ...

  4. js之字面量、对象字面量的访问、关键字in的用法

    一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...

  5. const的使用 || 对象增强写法 (对象字面量)

    const的使用 <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...

  6. 利用对象字面量创建对象

    利用对象字面量创建对象 <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

  7. js练习题:对象字面量的形式创建一个名字为可可的狗对象

    js练习题:对象字面量的形式创建一个名字为可可的狗对象 名称:可可 类型:阿拉斯加犬 年龄:5岁 颜色:棕红色 技能:汪汪汪(Call),演电影(ShowFilm) <!DOCTYPE html ...

  8. php字面量,浅谈js之字面量、对象字面量的访问、关键字in的用法

    一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...

  9. 对象、对象的属性、对象字面量、枚举对象中的属性、可变类型、变量和对象——JS对象

    目录 一.对象 二.对象的属性 三.对象字面量 四.枚举对象中的属性 五.可变类型 六.变量和对象 数据类型: 原始值:(不可变类型) 1.数值 Number 2.大整数 BigInt 3.字符串 S ...

最新文章

  1. ajax方法完整的事件流
  2. STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压
  3. thinkphp项目mysql类关系_ThinkPHP数据库与模型
  4. 【转载】堆和栈的内存分配
  5. 使用 Java API 操作 HBase
  6. Angr安装与使用之使用篇(一)
  7. arduino下载库出错_关于程序下载到最后卡住了以及自带库不能用的问题!!
  8. 2022最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
  9. 阿里云ESS弹性伸缩服务新功能来袭,更全面、更自动化的使用体验
  10. CDH动态资源池配置
  11. 常用颜色RGB、灰度值、取色值、透明度。
  12. 会议直播全流程解决方案
  13. std::uninitialized_copy::_Unchecked_iterators::_Deprecate
  14. 永磁同步电机工作原理
  15. adc芯片资料——电子迷你秤芯片CS1180
  16. 根据接口获取得数据,布局两列多行的代码写法
  17. 树状数组再进阶(区间修改+区间查询)
  18. python自动转换excel格式
  19. java中ofd文件转pdf_OFD版式文档Java开发组件(iOFD)
  20. 《世界上最远的距离》——泰戈尔

热门文章

  1. 《七哥说道》第十四章:趁着夏天还在,回校园
  2. 计算机三种桌面图标,电脑桌面图标都变成lnk后缀的三种解决办法
  3. java祝福语_程序员祝福语幽默-有关程序员节的祝福语
  4. python程序 爱意_用“Python”开启程序猿的爱情之旅
  5. 从高考到程序员,就这样慢慢的生活挺好
  6. 神武3手游一直等待服务器响应,神武3手游怎么进不去
  7. 饶阳php,河北饶阳实现滹沱河南部一百平方公里地表水全覆盖
  8. 小程序自定义组件的methods的调用
  9. CSS基础总结(五)定位
  10. 一步一步学java(8):一文彻底搞懂servlet、httpservlet以及http协议