现在下面的例子
//====================原型与原型链===========================
//prototype与_proto_
var a = {};
console.log(a.prototype); //undefined
console.log(a.__proto__); //Object {}
var b = function(){}
console.log(b.prototype); //b {}
console.log(b.__proto__); //function() {}
//说一下constructor属性他是一个对象,他指向了对象所在的构造函数。
//==============javascript万物皆对象===================
function A(){
this.name="I'm A!";
A.prototype.say=function(){
console.log("hello");
}
}
var a=new A();
//a.say();
console.log(a.prototype);
console.log(a.__proto__);
console.log(A.prototype);
console.log("A.__proto__ "+A.__proto__);
console.log("a.__proto__ "+a.__proto__);
console.log("a.__proto__ .__proto__ "+a.__proto__.__proto__);
console.log("a.__proto__ .__proto__.__proto__ "+a.__proto__.__proto__.__proto__);
原型:JS万物皆对象,对象自己的prototype属性,如果,他的该属性不为空,则,prototype所对应的就是该对象的原型。
原型链:当对象实现继承的时,__proto__指向上级对象的prototype,从而实现原型链。
有这样一张的盗的图,画的非常清楚了。
原文将的很好:点击打开链接