构造函数
new操作符
new X() 自动做了下面四件事情
类型是JS数据的分类
类是对于对象的分类,常见的有Array,Function,Data,Global,RegExp,Math
window的构造者
Window
window.constructor //Windowwindow.__proto__ == Window.prototype //true
window.Object的构造者
window.Function
window.Object.constructor //Functionwindow.Object.constructor == window.Function //true
window.Function的构造者
自己本身,人为规定的
window.Function.constructor == window.Function //true
proto 与prototype的区别
所有函数一出生就有一个 prototype 属性,所有 prototype 一出生就有一个 constructor 属性,所有 constructor 属性一出生就保存了对应的函数的地址(一个函数不是构造函数,它依然拥有 prototype 属性,只不过这个属性暂时没什么用)
如果一个对象不是函数,那么这个对象一般没有 prototype 属性,但这个对象一般一定会有 proto 属性
Object.prototype(根对象) 是 Object 构造出来的对象 obj 的原型,即 obj.proto === Object.prototype.
但是 Object.prototype 不是 Object 的原型,Object.proto 才是 Object 的原型。 ```javascript obj.proto === Object.prototype //true
Object.proto === Object.prototype //false
4. 所有函数的原型都是 Function.prototype,所以 Object.__proto__ === Function.prototype, Function.prototype 的原型是Object.prototype(根对象)。```javascriptObject.__proto__ === Function.prototype //trueArray.__proto__ === Function.prototype //trueFunction.__proto__ === Function.prototype //trueFunction.prototype.__proto__ === Object.prototype //trueArray.prototype.__proto__ === Object.prototype //true
- Object.prototype 的原型是 null。
Object.prototype.__proto__ === null //true
