全局变量 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
