📖显式原型和隐式原型
理论
所有数据类型的__proto__指向的是当前对象的原型,构造函数除外
对象不存在显式原型,输出对象的prototype为:undefined
函数都有一个prototype默认指向一个空对象
每个函数中的prototype只有自己与以自己为实例对象的实例能访问
构造函数的__proto__为其对应构造函数显式原型的值
代码
var FN = function(){};
var fn = new FN();
var FNTWO = function(){};
console.log(FN.__proto__);//function()
console.log(FN.prototype);//Object{}
console.log('————————————————————');
console.log(fn.__proto__);//Object{}
console.log(fn.prototype);//undefined
console.log('————————————————————');
console.log(FNTWO.__proto__);//function()
console.log(FNTWO.prototype);//Object{}
console.log('————————————————————');
console.log(FNTWO.__proto__ == FN.__proto__);//true
console.log(FNTWO.prototype == FN.prototype);//false
console.log('————————————————————');
//验证1:fn的隐式原型是否等于FN的显式原型
console.log(fn.__proto__ == FN.prototype);
//结论1:fn.__proto__ 等于 FN.prototype
//验证函数中的prototype是不是只有自身与以自己为实力对象的实力能使用
FN.prototype.FNfun = function(){ console.log('FNfun');}
console.log(FNTWO.prototype.FNfun());//报错,没有这个函数
//结论1:Yes


🧐发表评论