全局变量 Global 是是ECMAScript 中的全局对象(浏览器中是 window ),不属于其他对象的属性和方法,所有在全局作用域中定义的属性和方法,都是 Global 对象的属性( window )。 window 的属
全局变量
Global
是是ECMAScript 中的全局对象(浏览器中是window
),不属于其他对象的属性和方法,所有在全局作用域中定义的属性和方法,都是Global
对象的属性(window
)。
window
的属性分为两类,一种是 ECMAScript 规定的,一种是浏览器私有的(各浏览器可能不一样)。ECMAScript 规定的有parseInt
、parseFloat
、Number
、String
、Object
、Boolean
等,浏览器私有的alert
、console
、prompt
、confirm
、document
等。
var n = 1 //n是基本类型(number) var n1 = new Number(1) //n1是对象(object)
对象有toString()
方法,比如n1.toString()
基本类型也可以用toString()
方法,它是通过在内存中创建一个临时变量来获取的,比如temp.toString()
,在语句结束后这个变量就被回收了,所以:
var a = 1 a.xxx = 2 //语句结束后被回收,temp 在语句结束后将被回收 a.xxx //undefined,再次访问该属性,值为undefined
String 常用 API
trim()
裁剪字符串两边的空格concat()
连接两个字符串
原型
__proto__
和prototype
的区别:
var s = new String() //String.prototype 是 String 的公共属性(原型)的引用 //s.__proto__ 是 String 的公有属性(原型)的引用
Number
、String
、Object
、Boolean
的公有属性都存储在Object
原型中。没写代码的时,浏览器就默认有这条原型链指向Object
原型,如下图;当我们创建了一个变量后,它就创建了在Heap 中创建了一个对象,指向这个对象本身的原型,不在指向prototype
,如下图红线。
对象.__proto__ === 函数.prototype;
var __①__ = new __②__; //① 类型:对象 //② 类型:函数 var Object = new Function(); //var 对象 = new 函数; Object.__proto__ === Function.prototype; //对象.__proto__ === 函数.prototype; Function.__proto__ === Function.prototype; //因为 Function 也是 Object