JS里的内置对象
全局对象
ECMAScript 规定全局对象叫做 global,浏览器默认全局对象是window
ECMAScript规定的函数,在任何地方可以使用的函数
global.parseInt
global.parseFloat
global.Number
global.String
global.Boolean
global.Object
浏览器私有的函数
window.alert
window.prompt
window.comfirm
window.console.log
window.console.dir
window.document
window.document.createElement
window.document.getElementById
简单类型与对象
var n1 = 1 //n1是简单的数据类型,值是1
n1.toString() //'1'
var n2 = new Number(1) //n2是对象,valueOf值是1
简单类型是没有属性的,那是如何调用toString()方法的呢?简单的类型是怎么用对象的方法的?以n1.toString为例
生成一个临时对象,临时对象里再调用toString(),具体步骤如下:
1、n1.toString(),
2、生成一个临时对象temp,temp = new Number(n1)
3、temp对象调用toString(),temp.toString()
简单类型加上一个属性并赋值,是否可以取到该属性的值?
var n1 = 1
n1.*** = 2 //临时对象被回收
n1.*** = ? //undefined
所以JS中简单类型也可以看作是一个对象
当一个变量使用一个属性或方法时,JS会判断此变量是否是对象,若不是对象,则包装成一个对象。
原型
object的共有属性 Object.protype,这就是原型,Object的共有属性是所有对象的共有属性
prototype属性,这个属性包含一个对象__proto__,用来存共有属性
var o1 = {}
o1.__proto__ === Object.prototype //true
原型链
JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性,用于指向创建它的函数对象的原型对象prototype。
var 对象 = new 函数()
对象.__proto__ === 函数.prototype
__proto__ //对象的属性
prototype //函数的属性
函数.prototype 也是一个对象
函数.prototype.__proto__ === Object.prototype
如下例
var n = new Number(2);
n.__proto__ //存Number的共有属性
n.__proto__ === Number.prototype //true
n.__proto__.__proto__ //存对象的共有属性
n.__proto__.__proto__ === Object.prototype //true
Number.prototype是Number共有属性的引用
n.__proto__是Number的共有属性的引用
网友评论