显式原型和隐式原型

理论

所有数据类型的__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

标签

发表评论

您必须启用javascript才能在此处查看验证码