[js权威指南]第六章 对象

第六章 对象

对象是js的基本数据类型
是一种复合值
js对象是动态的,属性可以新增和删除
声明变量时,是通过引用来指向该对象的

属性特性

  • 可写,是否可以设置该属性的值
  • 可枚举,是否可通过for/in循环返回该属性
  • 可配置,是否可以删除或修改该属性

对象特性

  • 对象的原型指向另外一个对象,本对象的属性继承自它的原型对象
  • 对象的类是一个标识对象类型的字符串
  • 对象的扩展标记,是否可以向该对象添加新属性

三类js对象和两类属性

  • 内置对象:js规范定义的对象或类.数组、函数、日期等
  • 宿主对象,:js所嵌入的宿主环境.客户端js中表示网页结构的htmlelement对象都是宿主对象
  • 自定义对象
  • 自有属性
  • 继承属性

创建对象

通过new 运算符创建对象
new 后跟随一个函数调用,这个函数使用的构造函数

原型

每一个js对象都有一个原型相关联
每一个对象都从原型继承属性

所有通过对象直接量创建的对象都具有同一个原型对象
可以通过Object.prototype 获得对原型对象的引用

有点类似责任链的设计模式

访问的属性不存在的时候 //undefined 没有length属性

属性检测

  • in
  • hasOwnProperty // 检测是否是对象的自有属性
  • propertyIsEnumerable //自有属性且这个属性的可枚举性为true时它才返回true
for (p in o ){
	if(!o.hasOwnProperty(p)) 
		continue;  // 跳过继承的属性
	for(p in o){
		if (type o[p] === "function") 
			continue;  // 跳过方法
	}
}

属性getter和setter

  • 存取器属性: 不可写

  • 数据属性 : 只有一个简单的值

  • getOwnPropertyDescriptor 可以获得某个对象特定属性的描述

    • value
    • writable
    • enumerable
    • configurable

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/82869044