相信前端开发人员对DOM、BOM对象都已经十分了解了,这些两个对象不仅是入门概念,也是日常开发中接触最多的概念;同时作为前端开发的必备知识之一的Javascript,由于其具有高度的灵活性,很多同学都是秉承遇到什么学什么的理念,一点点不断来完善自己的知识,这也是个人提高技术的必经途径之一;不过个人还是比较倾向于整体把握为指导,日常积累为手段的方式进行提高。
总之适合自己的方法,才是最好的方法。下面切入正题:
全局对象:在宿主环境中,其自身及其所有属性都可以在程序的任何地方、任何时间访问到的对象;如果全局对象有切仅有一个,全局对象同时也是根节点对象;
根节点对象:所有属性、方法都挂载在根节点对象下,便于开发者进行属性、方法的查找;其缺点是调用繁琐;
全局对象 :不同属性、方法都挂载在多个节点对象下,优点是调用方便快捷;缺点也是被Java语言所诟病的无序,使用时不知从何查找;
DOM、BOM对象现在的明星NodeJS都有一个唯一的全局对象,所有其他属性、方法都从属于该节点对象、或其子节点对象;如DOM的html
、BOM的window
、NodeJS的global
;
Javascript为了开发者使用的方便,将诸多方法、属性都设置为全局对象/属性,所以Javascript就没有所谓的唯一的根节点对象;
Javascript的全局对象根据是否依赖宿主环境分为两类:
- 核心对象:即ECMAScript Global Object,这些对象在程序执行前已经存在了(默认实例化);
- 宿主环境下的对象:宿主环境提供的全局对象/函数,常见的是浏览器设定并且限制开发者重写的,如:setTimeout、location等,
序号 | 类别 | 栗子 |
---|---|---|
1 | 值属性 | NaN、Infinity、Undefined... |
2 | 函数属性 | eval()、parseInt()、isNaN()、decodeURI().... |
3 | 构造器(类)属性 | Object、Array、Function、String、Boolean、Number、Date、RegExp、Error、RangeError、SyntaxError... |
4 | 其他(类似JAVA中静态类) | Math、JSON... |
不管是Javascript的核心全局对象,还是宿主环境扩充的全局对象;开发者都可以随时调用;其不同之处在于:
1. ECMAScript中定义的核心全局对象是可重写,但不可枚举,即:Writeable=true,Enumerable=false
2. 宿主环境(主要是浏览器)设定的全局对象,一般是不允许重写的
Atas ialah kandungan terperinci Javascript中有关对象的概述. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!