js对象可扩展性和属性的四个特性(下)
js对象可扩展性和属性的四个特性(下)
一、前言
再次花时间回顾一下基础,毕竟要想楼建的好,地基就要牢固,嘻嘻!
在开始之前需要具备对prototype、__proto__、constructor有一定得了解,可以看看我之前写的一篇文章=>通道
之前的用户管理系统已经差不多了,顺便加了个socket聊天的,但是由于做java后台的哪个朋友节奏跟不上来,所以即时聊天的后台就是node+socket-io写的,由于用户列表也涉及比较多的用户隐私问题,所以我设置了页面权限和接口权限,然后下面开放的几个账号就只能看到几个页面而已,哈哈。=>通道
体验账号1:账号:“123456”。密码:“123456”
体验账号2:账号:“123123”。密码:“123123”
二、目录
- 对象属性的四个特性
- 对象的可扩展性
- 删除属性
- 检测属性
- 枚举属性
- 属性的getter和setter
三、删除属性
1、用指定对象作为原型创建对象
Object.create()
说明:
- 第一个参数是新建对象的原型
- 第二个参数也就是属性和特性描述的集合
const log = console.log;
//返回数据数据的描述
var aa = Object.create({ x: 1 }, {
y: {
value: 1,
writable: false,
enumerable: false,
configurable: true
}
})
log(aa)
log(Object.getOwnPropertyDescriptor(aa,'y'))

2、删除对象属性
delete
说明:
- delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性。
- delete只能删除自有属性,不能删除继承属性。
- delete不能删除可配置为false的属性
const log = console.log;
//返回数据数据的描述
var aa = {y:2}
Object.defineProperty(aa, 'x', {
value: 1,
writable: true,
enumerable: true,
configurable: false
})
log(aa);
log(delete aa.x);
log(delete aa.y);
log(aa)

四、检测属性
1、检测对象是否拥有某个属性
in
说明:
- in运算符不仅仅回检测对象自有属性,还会检测继承属性
const log = console.log;
var aa={x:1};
log('x' in aa);
log('y' in aa);
log('toString' in aa)

2、检测对象是否拥有某个属性
hasOwnProperty()
说明:
- hasOwnProperty只会检测对对象自有属性,不会检测继承属性
const log = console.log;
var aa={x:1};
log(aa.hasOwnProperty('x'));
log(aa.hasOwnProperty('y'));
log(aa.hasOwnProperty('toString'))

3、检测对象是否拥有某个属性
propertyIsEnumerable()
说明:
- propertyIsEnumerable属性只检测自有属性的可枚举属性
const log = console.log;
var aa = { x: 1 };
Object.defineProperty(aa, 'y', {
value: 1,
writable: true,
enumerable: false,
configurable: true
})
log(aa)
log(aa.propertyIsEnumerable('x'));
log(aa.propertyIsEnumerable('y'));
log(aa.propertyIsEnumerable('toString'))

五、枚举属性
1、枚举对象中的属性
Object.keys()
const log = console.log;
var aa = { x: 1 ,y:2};
Object.defineProperty(aa, 'z', {
value: 3,
writable: true,
enumerable: false,
configurable: true
})
log(aa)
log(Object.keys(aa))

2、枚举对象中的属性
Object.getOwnPropertyNames()
const log = console.log;
var aa = { x: 1 ,y:2};
Object.defineProperty(aa, 'z', {
value: 3,
writable: true,
enumerable: false,
configurable: true
})
log(aa)
log(Object.getOwnPropertyNames(aa))

六、属性的getter和setter
说明:
- 由get和set定义的属性叫做存取器属性
- 不同于普通属性它不是一个具体的值,而是由两个方法构成
const log = console.log;
var aa = { x: 1 ,
get y(){
return 1000;
},
set y(value){
this.x+=value;
}
};
log(aa)
aa.y=1;
log(aa)

js对象可扩展性和属性的四个特性(下)的更多相关文章
- js对象可扩展性和属性的四个特性(上)
# js对象可扩展性和属性的四个特性(上) 一.前言 再次花时间回顾一下基础,毕竟要想楼建的好,地基就要牢固,嘻嘻! 在开始之前需要具备对prototype.__proto__.constructor ...
- 遍历js对象中的属性
可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...
- {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...
- js 对象可枚举属性以及for in 循环和for of 循环
js中每个对象的属性(js里万物皆属性,对象的属性也是对象)都有一个属性叫enumerable(可枚举性),这个属性true/false决定了该对象的属性是否可枚举(就是让一些方法访问到这个属性). ...
- js对象—类型和属性特性
前言 权威指南中摘要的,工作中用不到的,重要的js基础. 三类对象两类属性 内置对象(native object) 是由ECMScript规范定义的对象或者类.例如:函数,数组,日期,正则... 宿主 ...
- js 对象的_proto_属性 和函数的prototype属性分析
bill是 Employee类型的实例,_proto_指向Employee.prototype Employee.prototype有一个constructor属性,指向Employee函数自身 fu ...
- [转]js对象中取属性值(.)和[ ]的区别
原文地址:https://www.jianshu.com/p/6a76530e4f8f 今天在写js的过程中遇到这么一个问题,取一个对象的属性值,通过obj.keys怎么都取不出来,但是用obj[ke ...
- js对象数组按属性快速排序
前一篇<关于selector性能比赛>中提到,目测觉得在$("div,p,a")这样有逗号时,sizzle耗时异常(600多个元素,花了200ms),说是它可能没有优化 ...
- 怎样判断JS对象中的属性
// 如何在不访问属性值的情况下判断对象中是否存在这个属性 var obj = { a: 2 }; Object.defineProperty( obj, 'b', // 让 b 不可枚举 { enu ...
随机推荐
- CSPS模拟 68
令人kuku的一场考试, T1 令人kuku的贪心,反工了好几次,耗费了1h之久. T2 令人kuku的数据结构,到死也没调出来,还是细节问题,要积累. T3 令人kuku的二分答案. 先二分第一个答 ...
- Feign设置assessToken
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.an ...
- JAVA Rest High Level Client如何取聚合后得数据
对于刚刚学习es的童鞋来说,很容易不清楚怎么获取客户端对es文档的聚合结果,下面就演示一下模仿DSL写聚合,然后获取到聚合对结果. 一, 对于下面这个简单的聚合,目的是对于文档全文匹配,聚合颜色字段. ...
- python 爬取豆瓣书籍信息
继爬取 猫眼电影TOP100榜单 之后,再来爬一下豆瓣的书籍信息(主要是书的信息,评分及占比,评论并未爬取).原创,转载请联系我. 需求:爬取豆瓣某类型标签下的所有书籍的详细信息及评分 语言:pyth ...
- C 总结 | 复习注意点
1.1 C预处理 常见错误 预处理错误 #include "" 和 <> 使用错误 "No such....." 更改“” 或者<> 或 ...
- python函数的基本语法<一>
函数: 一次定义,多次调用,函数可以变相看成变量函数的阶段: 1.定义阶段 2调用阶段 形参和实参: 定义阶段的参数叫形参,调用阶段的参数叫实参 函数的几种基本用法: #多变量 def test(na ...
- Pandas进阶笔记 (一) Groupby 重难点总结
如果Pandas只是能把一些数据变成 dataframe 这样优美的格式,那么Pandas绝不会成为叱咤风云的数据分析中心组件.因为在数据分析过程中,描述数据是通过一些列的统计指标实现的,分析结果也需 ...
- 201871010114-李岩松《面向对象程序设计(java)》第十一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
- T-SQL Part IV: ORDER BY
ORDER BY 返回一个Cursor,并不返回结果集.而试图将Cursor作为输入将产生了错误. 所以,下列的SQL语句将产生错误: SELECT VerID, IsComplete VerID, ...