JavaScript基础知识整理(对象的属性)
对象的定义
无序属性的集合,属性可以包括基本值,对象或函数。
JavaScript中有两类属性,数据属性和访问器属性。
特征值
JavaScript使用特征值来描述属性的行为,因为是为实现JavaScript引擎用的,所以不能直接访问。
数据属性有4个特性:[[Configurable]]、[[Enumerable]]、[[Writable]]和[[Value]]。
[[Configurable]]表示能否通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认为true。
[[Enumerable]]表示能否使用for-in循环返回属性,默认为true。
[[Writable]]表示能否修改属性的值,默认为true。
[[Value]]包含着属性的值,读取属性值时从这里读,写入属性值时从这里写,默认为undefined。
可以使用Object.defineProperty()来修改属性的特性,这个函数接收3个参数:属性所在对象,属性名,描述符对象。
var person = {};
Object.defineProperty(person,"name",{
writable:false,
value:"tony"
}
alert(person.name)//Tony
person.name = "sam";
alert(person.name)//Tony 因为writable设置为false所以不能修改值
访问器属性没有数据值,相对的有setter()和getter()函数,读取属性值时调用getter(),写入属性值时调用setter()。
访问器属性也有4个特性:[[Configurable]]、[[Enumerable]]、[[Get]]和[[Set]]。
[[Configurable]]表示能否通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认为true。
[[Enumerable]]表示能否使用for-in循环返回属性,默认为true。
[[Get]]读取属性时调用的函数,默认为undefined。
[[Set]]写入属性时调用的函数,默认为undefined。
访问器属性不能直接定义,必须用Object.defineProperty()定义。
var book = {
_year:2000,
edition:1
}
Object.defineProperty(book,"year",{
get:function(){
return this._year;
}
set:function(newyear){
if(newyear > 2000){
this._year = newyear;
this.edition = newyear - 2000
}
}
});
book.year = 2001;
alert(book.edition);//2
定义多个属性
当要定义多个属性时可以用Object.defineProperties(),接收两个参数,要添加属性的对象以及由想要添加属性组成的对象。
var book = {};
Object.defineProperties(book,{
_year:{
writable:true,
value:2000
},
edition:{
writable:true,
value:1
},
year:{
get:function(){
return this._year;
},
set:function(newyear){
if(newyear > 2000){
this._year = newyear;
this.edition = newyear - 2000;
}
}
}
});
读取属性的特性
想要获得属性的特性值可以用Object.getOwnPropertyDescriptor()方法,接收两个参数,属性所属的对象,属性名称,返回一个包含特性值的对象。
var descriptor = Object.getOwnPropertyDescriptor(book,"_year");
alert(descriptor.value);//"2000"
var descriptor1 = Object.getOwnPropertyDescriptor(book,"year");
alert(descriptor.value);//"undefined"
JavaScript基础知识整理(对象的属性)的更多相关文章
- JavaScript基础知识整理
只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...
- JavaScript基础知识(对象、函数与对象)
17.对象 属性:描述对象的信息 方法:描述对象的行为 封装:只关心输入和输出(不管过程如何实现) ü 对象的分类: 内置对象(原生对象): 就是JavaScript语言预定义的对象(如Strin ...
- JavaScript基础知识整理(2)
15.处理图像 注意:(1)在写js文件时,尽量将函数的声明往后写,将函数调用写在前面,这样能够使代码结构很清晰. (2)一个网页中翻转器一般超过3个,所以使用for循环减少重复使用翻转器代码的次数. ...
- JavaScript基础知识整理(1)
粗略理解,努力入门中 1.在html中引入外部脚本: <script src="filename.js"></script> 2.注释: 多于一行的长注 ...
- JavaScript基础知识整理(1)数组
第一:创建. 1,var arr= new Array(); //数组为空.长度为0. arr[0]="apple"; arr[1]="orange"; arr ...
- JavaScript基础知识----document对象
对象属性document.title //设置文档标题等价于HTML的<title>标签document.bgColor //设 ...
- Javascript 基础知识整理
Javascript的作用 表单验证,减轻服务器压力 添加页面动画效果 动态更改页面内容 Ajax网络请求(异步加载数据) -它属于前端的核心,主要用来控制和重新调整DOM,通过修改DOM结构,从而达 ...
- javascript基础知识整理(不定时更新)
1.js中真与假的定义: 真:true,非零数字,非空字符串,非空对象 假:false,数字零,空字符串,空对象(null),undefined 2.使用for循环对json进行循环操作 for(va ...
- Javascript基础知识总结一
Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
随机推荐
- 重拾prometheus
1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- Android IO 框架 Okio 的实现原理,到底哪里 OK?
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 前言 大家好,我是小彭. 今天,我们来讨论一个 Square 开源的 I/O 框架 Okio,我们最开始接触 ...
- ASP.NET Core - 入口文件
1. 入口文件 一个应用程序总有一个入口文件,是应用启动代码开始执行的地方,这里往往也会涉及到应用的各种配置.当我们接触到一个新框架的时候,可以从入口文件入手,了解入口文件,能够帮助我们更好地理解 ...
- Listen 1音乐播放器
Listen 1 Listen 1可以搜索和播放来自网易云音乐,QQ音乐,酷狗音乐,酷我音乐,Bilibili,咪咕音乐网站的歌曲,让你的曲库更全面.还支持歌单功能,你可以方便的播放,收藏和创建自己的 ...
- 学习Java Day12
今天学习了多维数组
- 如何优化线上WebAssembly
如何优化线上WebAssembly WebAssembly部署使用 HTTPS : 为什么?我可以通过一个案例查看 ,下面我们会通过masa docs站点进行测试 打开 http://docs.mas ...
- GoLang 的协程调度和 GMP 模型
GoLang 的协程调度和 GMP 模型 GoLang 是怎么启动的 关于 GoLang 的汇编语言,请查阅 参考文献[1] 和 参考文献[2] 编写一个简单的 GoLang 程序 main.go, ...
- Loadrunner性能测试简记
性能测试 模拟多种正常值.峰值以及异常负载条件来对系统的各项性能指标进行的测试. 功能对比性能 功能测试是操作功能.需求规格(正向.逆向).性能测试是测业务场景.满足度(时间.空间).二者相辅相成,都 ...
- 前瞻性研究: axSpA中轴放射学进展延缓得益于TNF抑制剂持续治疗3年
西班牙学者近期发表的这项前瞻性研究是基于axSpA患者注册登记数据库,患者登记入库后,继续治疗和评估3年[1]. 患者分为2组,组1有46例,在登记入库时已经在用肿瘤坏死因子抑制剂(TNFi)且已治疗 ...
- CCRD_TOC_2008年第3期
中信国健临床通讯 2008年第3期 目 录 银屑病和银屑病关节炎 1. 国际皮肤病专家呼吁重视生物制剂治疗银屑病 原文: http://pharmatimes.com/forums/ ...