JavaScript对象
2019-03-21 14:33:19 7 举报
AI智能生成
JavaScript对象
作者其他创作
大纲/内容
JavaScript对象
语法
声明(文字)形式
可以添加多个键值对
构造形式
var obj = new Object()
只能逐个添加属性
obj.name='Jim'
javascript中6种主要类型
简单基本类型
string
number
boolean
null
typeof null 时会返回字符串 \"object\" 。 1 实际上, null 本身是基本类型
undefined
object
有一种常见的错误说法是“JavaScript 中万物皆是对象”,这显然是错误的。
对象子类型(内置对象)
String
Number
Boolean
Object
Function
Array
Date
RegExp
Error
它们实际上只是一些内置函数,可以当作构造函数来使用
对象的属性
属性名
对象的属性名永远是字符串
如果你使用 string (字面量)以外的其他值作为属性名,那它首先会被转换为一个字符串。
属性描述符
从 ES5 开始,所有的属性都具备了属性描述符
特性
writable (可写)默认true
如果为false,对属性值的修改会静默失败,严格模式下会抛出TypeError
configurable (可配置)默认true
为true时可以通过defineProperty来修改属性描述符
为false时
不能再把configurable改为true(不可逆)
仍然可以把 writable 的状态由 true 改为 false ,但是无法由 false 改为 true
会禁止删除这个属性,delete操作会静默失败
enumerable (可枚举)默认true
为true时,此属性会出现在属性枚举中
为false时,此属性不会出现在属性枚举中
获取属性描述符
添加或修改属性(如果它是 configurable )并设置特性
Object.defineProperty(..)
不变性
对象常量
结合 writable:false 和 configurable:false 就可以创建一个真正的常量属性(不可修改、重定义或者删除)
禁止扩展
Object.preventExtensions(obj)
禁止一个对象添加新属性
密封
Object.seal(obj)
在禁止扩展的基础上,还让所有属性 configurable:false
冻结
Object.freeze(obj)
在密封的基础上,还让所有属性 writable:false
判断属性是否存在
子主题
(\"a\" in myObject);
会检查属性是否在对象及其 [[Prototype]] 原型链中
Object.prototype.hasOwnProperty(..)
myObject.hasOwnProperty( \"a\" );
只会检查属性是否在 myObject 对象中
枚举
判断属性是否可枚举
myObject.propertyIsEnumerable( \"a\" );
得到所有可枚举属性
Object.keys(..)
得到所有属性
Object.getOwnPropertyNames(..)
复制对象
对于JSON安全的对象
var newObj = JSON.parse( JSON.stringify( someObj ) );
ES6 定义了 Object.assign(..) 方法来实现浅复制
遍历
直接遍历值而不是数组下标
ES6新增 for..of 循环语法
0 条评论
回复 删除
下一页