先弄懂两个概念,函数和对象。对象是拥有属性和方法的数据,对象都是通过函数创建的;函数是一种对象。嗯……晕就对了~
_proto_
1、每个对象都会有的一个属性。用来标识自己所继承的原型,但实际开发中不能访问。
有人用 [[prototype]] 来表示,注意“[[prototype]]”和“prototype”是不一样的
function Person(){}; //函数 var p = new Person(); //对象 consol.log(p._proto_); //undefined console.log(Person._proto_); //undefinedprototype
1、拥有内部方法的对象才有的属性,例如函数,对象的方法,Object(内置方法为toString、valueOf)。指向一个原型对象,可以访问。
指向的这个原型对象其实就是自身的原型,可以为这个原型添加属性和对象(方法),甚至可以指向一个现有的对象
function Person(){}; //函数 var p = new Person(); //对象 Person.prototype.f = function(){} //对象的方法 consol.log(p.f.prototype); console.log(Person.prototype); // {constructor: ƒ} //constructor: ƒ () //__proto__: Object//Person.prototype是一个对象,所以有_proto_属性 console.log(Object.prototype); //{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}图示
参考:https://segmentfault.com/a/1190000011801127
转载于:https://www.cnblogs.com/baby-zuji/p/11208774.html
相关资源:浅谈javascript中的prototype和__proto__的理解