JavaScript 对象字面量
目录
一. 对象的基本用法
二. 遍历对象
三. 属性的类型
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 对象字面量相关推荐
- JavaScript基础07-day09【嵌套for循环、break和continue、对象、数据类型、对象字面量、函数】
学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...
- 字面量、对象字面量、函数字面量、函数定义
#1.字面量(literal) 用于表达一个固定值的表示法,又叫常量. [JS程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少] #2.对象字面量 语法: {k1:v1, k2:v2, ...
- 学习新对象字面量语法
目标 使用简写属性名称 使用简写方法名称 使用计算属性名称 问题 哪些部分是冗余的? const person={name:name,address:address,sayHello:function ...
- js之字面量、对象字面量的访问、关键字in的用法
一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...
- const的使用 || 对象增强写法 (对象字面量)
const的使用 <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...
- 利用对象字面量创建对象
利用对象字面量创建对象 <!DOCTYPE html> <html lang="en"><head><meta charset=" ...
- js练习题:对象字面量的形式创建一个名字为可可的狗对象
js练习题:对象字面量的形式创建一个名字为可可的狗对象 名称:可可 类型:阿拉斯加犬 年龄:5岁 颜色:棕红色 技能:汪汪汪(Call),演电影(ShowFilm) <!DOCTYPE html ...
- php字面量,浅谈js之字面量、对象字面量的访问、关键字in的用法
一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...
- 对象、对象的属性、对象字面量、枚举对象中的属性、可变类型、变量和对象——JS对象
目录 一.对象 二.对象的属性 三.对象字面量 四.枚举对象中的属性 五.可变类型 六.变量和对象 数据类型: 原始值:(不可变类型) 1.数值 Number 2.大整数 BigInt 3.字符串 S ...
最新文章
- ajax方法完整的事件流
- STM32 之十 供电系统及内部参照电压(VREFINT)使用及改善ADC参考电压
- thinkphp项目mysql类关系_ThinkPHP数据库与模型
- 【转载】堆和栈的内存分配
- 使用 Java API 操作 HBase
- Angr安装与使用之使用篇(一)
- arduino下载库出错_关于程序下载到最后卡住了以及自带库不能用的问题!!
- 2022最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
- 阿里云ESS弹性伸缩服务新功能来袭,更全面、更自动化的使用体验
- CDH动态资源池配置
- 常用颜色RGB、灰度值、取色值、透明度。
- 会议直播全流程解决方案
- std::uninitialized_copy::_Unchecked_iterators::_Deprecate
- 永磁同步电机工作原理
- adc芯片资料——电子迷你秤芯片CS1180
- 根据接口获取得数据,布局两列多行的代码写法
- 树状数组再进阶(区间修改+区间查询)
- python自动转换excel格式
- java中ofd文件转pdf_OFD版式文档Java开发组件(iOFD)
- 《世界上最远的距离》——泰戈尔
热门文章
- 《七哥说道》第十四章:趁着夏天还在,回校园
- 计算机三种桌面图标,电脑桌面图标都变成lnk后缀的三种解决办法
- java祝福语_程序员祝福语幽默-有关程序员节的祝福语
- python程序 爱意_用“Python”开启程序猿的爱情之旅
- 从高考到程序员,就这样慢慢的生活挺好
- 神武3手游一直等待服务器响应,神武3手游怎么进不去
- 饶阳php,河北饶阳实现滹沱河南部一百平方公里地表水全覆盖
- 小程序自定义组件的methods的调用
- CSS基础总结(五)定位
- 一步一步学java(8):一文彻底搞懂servlet、httpservlet以及http协议