1、JavaScript是一门动态类型语言,不是class-based, 而是prototype-based. 当考虑继承,JavaScript只有一种构造器,即objects. prototype框架是由2005年Sam Stephenson作为在Ruby on rails 中支持Ajax而被创造出来,其并非JavaScript原创
在JavaScript中,几乎所有的类型及对象都有toString() 以及valueOf方法,这是由于类型与对象默认有__proto__
引用, 其指向该类型构造函数的prototype属性,构造函数的__proto__
指向Object的prototype,最终Object.prototype.__proto__
指向null, prototype也被称为对象的公有属性或原型, null 没有原型,为该原型链的终点。
一般研究对象的
__proto__
和函数的prototype
对象.__proto__
=== 某函数.prototype
如果把函数看成对象,那么函数.__proto__
=== Function.prototype
如果把 Function 看成对象,那么 Function.__proto__
=== Function.prototype
2、由于JavaScript中一个对象未被任何其他对象引用则会被垃圾回收,故常见的number, string, boolean, symbol等的构造函数均由一个全局对象window指向,故可以直接使用window.String()等方法。
window.String(1)
"1"
window.parseFloat(1.23)
1.23
(16).toString(16)
"10"
3、window还可以用于使用浏览器的默认方法,如以下:
window.alert
window.prompt
window.comfirm
window.console.log
window.console.dir
window.document
window.document.createElement
window.document.getElementById
4、构造函数可以对默认属性进行覆写,如数字Number的toString(16)表示转为16进制后用字符串表示