//2020 4.24更新
更正: Date 的实例的__proto__指向的是Date函数
对于整个关于类的结构深入分析在 https://blog.csdn.net/singlever/article/details/105113968
//2020.3.9 更新
扩展
所有的变量类型都是由其变量的构造函数所构成
let s = 1;
s.constructor === Number //true
s = '1'
s.constructor === String //true
s = []
s.constructor === Array //true
s = {}
s.constructor === Object //true
String //ƒ String() { [native code] }
Number //ƒ Number() { [native code] }
Object //ƒ Object() { [native code] }
Array //ƒ Array() { [native code] }
——————————————————————————————————————————————————————————————————————————————————————————————
//原文
JavaScript有一句话 万物皆为对象
不然就是对象中的属性
1.Protoype的讲解
prototype属性只有function函数拥有,对象是没有这个属性的,虽然function也是一种对象,但是是一种特殊的对象
用一个大佬的一句话对prototype的描述 这个属性是一个指针,指向一个对象,这个对象的用途就是 “包含所有实例” 共享的属性和方法(我们把这个对象叫做原型对象)。
原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。
2020.3.26更新 对prototype 的补充 https://blog.csdn.net/singlever/article/details/105113968
2.proto
对象具有属性proto,通过__proto__可以,指向到构造当前对象的原型
例
1. var c = {}
c.__proto__ //原初对象
2. var k = function(){}
k.__proto__ //原初构造函数function ƒ () { [native code] }
k.__proto__.__proto__ //原初对象
3. var c = new Date()
c.__proto__ //Date对象
c.__proto__.__proto__ //原初对象
4. var ksk = function(k){ this.k = k }
ksk.__proto__ //原初构造函数function
ksk.__proto__.__proto__ //原初对象
5. class qu extends Data{}
qu.__proto__ //Date函数
qu.__proto__.__proto__ //原初构造函数function
qu.__proto__.__proto__.__proto__ //原初对象
为什么说函数是对象,相信大家不难看出了,JavaScript所有的表面上的函数都是通过一个原初的构造函数 构造的,而这个原初构造函数 是由原初对象构造的
所以一切的指向最后都指向了 原初对象 ,当然这里的原初对象只是我自己命的名。