一.引用官方文档中的话:
JavaScript 是动态的,本身不提供一个 class 的实现。即便是在 ES2015/ES6 中引入了 class 关键字,但那也只是语法糖,JavaScript 仍然是基于原型的。
所以说,js还是和其他oop语言有些不同. 下面是我的思考:
1.Object是所有对象的父类
class Person{
constructor() {
}
}
let person = new Person();
console.log(person.__proto__ === Person.prototype);
console.log(person.__proto__.__proto__);
console.log(person.__proto__.__proto__.__proto__);
2.那构造函数也是对象啊,他是谁new 的?
class Person{
constructor() {
}
}
console.log(Person.__proto__);
3.但是Function本身也是对象,所以说new Function的还是Function
console.log(Function.__proto__);
4.Object也是函数 也是被Function new 出来的
console.log(Object.__proto__);
5.一切对象的源头都是Object,所以Function.prototype.__proto__指向了Object.prototype
console.log(Function.prototype.__proto__);
最后 贴一张网上的图片,感谢作者