标签:asc 检测 nbsp efi length desc prevent 循环 for
创建对象的两种方法:
var person2 = new Object(); person2.name="Qian";
var person1={ name:"Qian" };
对象添加以及修改时JavaScript会在对象上调用[[Put]]和[[Set]]方法
console.log("name" in person1)/*true*/
console.log(person1.hasOwnProperty("name"))/*true*/
var person1={ name:"Qian" }; delete person1.name; console.log(person1.hasOwnProperty("name"))/*false*/
for-in:可枚举属性的内部特征都被设置为true,for-in循环会枚举一个对象所有的可没经验属性并将属性名赋给一个变量
var person1 = { name:"Qian", age:12 } for(var item in person1){ console.log(item)/*name age*/ }
Object.keys():获取一个对象的属性列表已备程序使用
var person1 = { name:"Qian", age:12 }; var properties = Object.keys(person1); for(var i=0;i<properties.length;i++){ console.log(i) }
数据属性:包含一个值
访问器属性:包含一个函数
是否可遍历:[[Enumerable]]
是否可配置:[[Configurable]]---------->可以用delete删除
修改属性特征:Object.defineProperty()方法
例:修改某个对象属性使其变成不可以枚举且不可配置
Object.defineProperty(person1,"name",{ enumerable:false, configurable:false }); console.log(person1.propertyIsEnumerable("name"))/*false*/
[[Value]]:创建对象时该特征自动赋值
[[Writable]]:布尔值,默认可以写
定义完整的数据属性:Object.defineProperty()
var person1 = {} Object.defineProperty(person1,"name",{ value:"Qian", enumerable:true, configurable:true, writable:true })
[[Get]]
[[Set]]
定义多重属性
Object.defieProperties()方法
var person1 = {} Object.defineProperties(person1, { _name:{ value: "Qian", enumerable: true, configurable: true, writable: true }, name:{ get:function () { console.log("Reading me") } } })
Object.getOwnPropertyDescriptor()方法
var person1 = { name:"Qian" } var deseciptor = Object.getOwnPropertyDescriptor(person1,"name"); console.log(deseciptor.enumerable)/*true*/
[[Extensible]]:布尔值,设置为false,禁止新属性的添加
方法:使用Object.preventExtensions()
检测方法:使用Object.isExtensible()
var person1 = { name:"Qian" } Object.preventExtensions(person1); console.log(Object.isExtensible(person1))/*false*/
方法:Object.seal()
检测方法:使用Object.isSealed()
var person1 = { name:"Qian" }; Object.seal(person1); console.log(Object.isSealed(person1))/*true*/
方法:Object.freeze()
检测方法:Object.isFrozen()
var person1 = { name:"Qian" }; Object.freeze(person1); console.log(Object.isFrozen(person1))/*true*/
1、将属性视为键值对,对象视为属性的哈希表有助于理解JavaScript对象。
2、你可以用点好或者中括号访问对象的属性
3、用in操作符检测某个属性是否存在
4、属性的两种类型:数据属性和访问器属性
5、属性的特征
6、锁定对象的3中方式
标签:asc 检测 nbsp efi length desc prevent 循环 for
原文地址:https://www.cnblogs.com/QianBoy/p/8859036.html