这里所说的JavaScript指浏览器环境中的包括宿主环境在内的。第一种是ECMAScript Global Object,第二种是宿主环境(Host)下的全局对象/函数。
一、核心JavaScript内置对象,即ECMAScript实现提供的不依赖于宿主环境的对象。
这些对象在程序执行之前就已经(实例化)存在了。ECMAScript称为The Global Object,分为以下几种
1, 值属性的全局对象(Value Properties of the Global Object)。有NaN,Infinity,undefined。
2, 函数属性的全局对象(Function Properties of the Global Object)。有eval,parseInt,parseFloat,isNaN,isFinite,decodeURI,encodedURI,encodeURIComponent
3,构造器(类)属性的全局对象(Constructor Properties of the Global Object)。有Object,Function,Array,String,Boolean,Number,Date,RegExp,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError。
4,其它属性的全局对象(Other Properties of the Global Object),可以看出成是Java中的静态类,可以直接用类名+点号+方法名使用。有Math,JSON。
ECMAScript规范提到这些全局对象(The Global Object)是具有Writable属性的,即Writable为true,枚举性(Enumerable)为false,即不能用for in枚举。ECMAScript有这么一段
Unless otherwise specified, the standard built-in properties of the global object have attributes {[[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}.
虽然规范提到The Global Object是可以被重写的,但不会有谁去重写它们的。这里仅仅做个测试。
Js代码
1.NaN = 11;
2.eval = 22;
3.Object = 33;
4.Math = 44;
5.
6.alert(NaN);
7.alert(eval);
8.alert(Object);
9.alert(Math);
NaN = 11;
eval = 22;
Object = 33;
Math = 44;
alert(NaN);
alert(eval);
alert(Object);
alert(Math);
分别取值属性的全局对象, 函数属性的全局对象,构造器(类)属性的全局对象,其它属性的全局对象NaN,eval,Object,Math。结果如下:
IE6/7/8 Firefox/Chrome/Opera IE9/Safari
alert(NaN) 11 NaN
alert(eval) 22 22
alert(Object) 33 33
alert(Math) 44 44
结果可以看出除了NaN在IE9(pre3)/Safari不能被重写外,其它都被重写了。
这里只是列举了四个,感兴趣的可以将以上所有的The Global Object一一测试下。这里想表达的是核心JavaScript内置对象一般是可以被重写的 ,虽然没人这么干
分享到:
相关推荐
JavaScript全局变量的本质及页面共享问题 -跨页面访问变量的问题
JavaScript全局变量的本质与页面共享问题是一个重要的编程概念,尤其是在网页开发中。JavaScript是一种广泛使用的脚本语言,它的全局变量在程序中的角色独特,且与页面的生命周期和浏览器环境紧密相关。 首先,我们...
看看有帮助,全局变量,与局部变量的差异!
在JavaScript中,全局变量是一种可以在整个程序中任何地方访问的变量,它们的作用域跨越函数和代码块。本篇文章将深入探讨JavaScript声明全局变量的几种方法以及如何访问这些变量。 1. **全局变量的声明方式** - ...
当时想到的就是使用全局变量,在 app.js 中定义好全局变量,点击组件页面时就修改全局变量的值,父页面同样使用全局变量的值,这样一来就可以动态打开/关闭弹出层且传递值了。 下面先看看 app.js 中怎么定义的: ...
JavaScript实现IFrame子窗口调用父窗口的全局变量
JavaScript全局变量封装模块是一种编程实践,它旨在减少全局命名空间污染,提高代码可维护性和防止命名冲突。在JavaScript中,全局变量是所有作用域都可以访问的,这可能导致意外的覆盖和错误,尤其是在大型项目中...
全局变量是编程中一个双刃剑,它为程序提供了极大的灵活性,同时也可能导致代码难以理解和维护。在许多编程语言中,全局变量可以在程序的任何地方被访问和修改。本文将探讨如何在函数中修改全局变量,包括这种做法的...
本文将深入探讨JavaScript的全局变量与局部变量。 首先,我们要明白JavaScript的作用域划分标准。不同于其他一些语言,JavaScript的作用域不是基于代码块(如if、while、for等),而是基于函数(function block)。...
在JavaScript编程中,理解和掌握全局变量与局部变量的概念至关重要。全局变量在整个脚本或函数作用域内都可访问,而局部变量只在其所在的函数内部有效。本文将深入解析这两种变量的特性,并通过实例代码来演示它们的...
uni-app是基于Vue.js构建的多端开发框架,因此其全局变量的实现方式也深受Vue的影响。下面我们将详细探讨几种在uni-app中实现全局变量的方法,并以代码示例进行说明。 1. **Vuex** Vuex是Vue.js的一个状态管理库,...
超全面javaweb教程28天day2-_22_js的全局变量和局部变量
以上这种通用的变量抽出来,方便你在其他scss的样式里面调用 比如 li { background: nth($colour,6) } 只存储变量,别放公共的样式进去切记公共的样式 你可以参考我之前的博客那种写法 我直接上案例吧sass_jb...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
使用模块化系统,如CommonJS(Node.js)、AMD(RequireJS)或ES6的`import`和`export`,可以有效地管理作用域和依赖关系,降低全局变量的使用。 4. **闭包**: 利用闭包特性,可以在函数内部定义变量,这些变量仅...
本篇文章主要介绍了浅谈在vue项目中如何定义全局变量和全局函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
// 全局变量,掩盖了外部作用域的pageNo, 相当于在js顶部写 var pageNo = 1 // 正确的做法应该是使用 var pageNo = 1; // do something... } function paginate(pageNo, pageSize){ window.location.href = ...
Vue2 全局变量的设置方法 Vue2 中设置全局变量有两种方法:全局变量专用模块和全局变量模块挂载到 Vue.prototype 里。 1. 全局变量专用模块 全局变量专用模块是以一个特定模块来组织管理这些全局量,需要引用的...
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...