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 网络流量 网络流量就是网 ...
随机推荐
- MySQL 如何实现表的创建、复制、修改与删除
MySQL中如何利用代码完成表的创建.复制.修改和删除?下面总结了在创建表的时候各字段的含义以及注意哪些问题,复制和修改及删除常用的代码. 一.创建表 --创建新表,如果存在则覆盖 drop tabl ...
- 【HMS Core】一张图片带你玩转机器学习服务
1.介绍 总览 Cloud DB(云数据库)是一款端云协同的数据库产品,提供端云数据的协同管理.统一的数据模型和丰富的数据管理API接口等能力.在保证数据的可用性.可靠性.一致性,以及安全等特性基础 ...
- 微软出品自动化神器【Playwright+Java】系列(九)多线程、重定向、弹出新窗口、截图、新页面、录制、页面对象模式操作
写在前面 关于Playwright系列的文章,真的很久没有写了,今天一个不小心官方API部分过完了,下面将为大家逐一演示,感兴趣的同学可以自行动手练习. API部分 多线程 直白点说就是多线程下Pla ...
- vivo版本发布平台:带宽智能调控优化实践-平台产品系列03
vivo 互联网平台产品研发团队 - Peng Zhong 随着分发规模地逐步增长,各企业对CDN带宽的使用越来越多.并且,各类业务使用CDN的场景各式各样,导致带宽会不断地出现骤增骤降等问题.基于成 ...
- 【USACO 2021 January Contest, Platinum】Problem 1. Sum of Distances
\(\text{Solution}\) 一个性质:两个 \(K\) 元组有边相连当且仅当每个点在对应的图中到 \(1\) 有奇偶性相同的路径 那么我们就可以预处理每个图中的点到 \(1\) 的奇偶最短 ...
- JavaSE 对象与类(二)
6.对象构造 重载:如果有多个方法(比如,StringBuilder构造器方法)有相同的名字.不同的参数.便产生了重载. 重载解析:编译器通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹 ...
- 关于dynamic类型
动态类型是从C#4才开始有的,随着DLR一起引人的. 大部分时候的行为如同object类型,对应的IL代码也是object类型. 它的特点是编译时会忽略在dynamic上进行的操作,如调用方法,读写属 ...
- Vue学习笔记之计算属性、内容分发、自定义事件
1. 计算属性 计算属性的重点突出在属性两个字上(属性是名词),首先它是个属性其次这个属性有计算的能力(计算是动词),这里的计算就是个函数:简单点说,它就是一个能够将计算结果缓存起来的属性(将行为转化 ...
- 排查问题-输出pojo日志,尽量用json
背景: 下午在做一个前后端md5加密签名校验. 前端用参数A,B,C,经过MD5加密函数,得到签名D. 然后前端带着ABCD一块来到后端. 同样的,后端拿到请求后,用MD5函数对ABC进行加密,得到签 ...
- Linux命令执行时,提示commond not found的处理办法
执行chattr命令时,或其他命令时,若出现命令没发现,commond not found 那么就是有可能命令文件丢了,执行find / -name chattr,如果没有命令了,可以拷贝一个或yum ...