Js对象
对象
http://www.ferecord.com/lujs-object.html#native-object
类(构造函数)
https://www.cnblogs.com/jiejiejy/p/7666091.html
类是一个抽象的概念,只能说类有属性和方法,但是不能给属性赋具体的。比如,人类有姓名,但是不能说人类的姓名叫什么。
所谓“类”就是对象的模板,对象就是“类”的实例。
但是,JavaScript 语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)。
广义对象:
对象是一个具体的个例,是将类中的属性进行具体赋值而来的个体。
对象是一个容器,封装了属性(property)和方法(静态方法与实例方法)。
各对象方法详见;https://wangdoc.com/javascript/stdlib/object.html
- 静态方法:
Object.keys(),
Object.getOwnPropertyNames() - 实例方法
Object.prototype.valueOf()
Object.prototype.toString()
除了用字面量声明的基本数据类型之外,JS中万物皆对象。换句话说,只要能添加属性和方法的变量,都可以称为对象。(Object)
对象由类(构造函数)通过类实例化(new)出一个对象。
分类:
本地对象(native object)
-
ECMA-262把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。
-
这些对象都可以在浏览器控制台里打印出来,可以看出它们多数是 function 类型,有一些如 Reflect 是 object 类型。
Object
Function
Boolean
Symbol
Array
Number
Date
String
RegExp
Map
Set
WeakMap
WeakSet
Promise
Generator
Reflect
Proxy
Error
内置对象(built-in object)
“由ECMAScript实现提供的,独立与宿主环境的所有对象,在ECMAScript程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已经被实例化了。ECMA只定义了两个内置对象,即Global和Math(它们也是本地对象,根据定义,所有内置对象都是本地对象)。
在 JavaScript 中,所有的本地对象、全局属性、全局函数都是 Global 对象的属性。ECMAScript 虽然没有指出如何直接访问 Global 对象,但 Web 浏览器都是将这个全局对象作为 window 对象的一部分加以实现的。
Global
Math
宿主对象(host object)
所有非本地对象都是宿主对象,即由ECMAScript实现的宿主环境提供的对象。
所有的 BOM 和 DOM 对象都是宿主对象。JavaScript 中常用的宿主对象主要包括以下:
BOM 对象
window
location
navigator
screen
history
DOM 对象
Document
Body
Event
Form
Image
事件对象 event
…
用户自定义对象(user-defined object)
开发者通过 Js 代码创建的自己的对象。
狭义对象:
对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。(object)
函数:
函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。
函数也有属性和方法(name属性,length属性,toString方法),所以也是广义的对象。
数组:
是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。也具有属性,本质是一种特殊的对象