浅谈

it2022-05-05  138

先弄懂两个概念,函数和对象。对象是拥有属性和方法的数据,对象都是通过函数创建的;函数是一种对象。嗯……晕就对了~

 

_proto_

1、每个对象都会有的一个属性。用来标识自己所继承的原型,但实际开发中不能访问。

  有人用 [[prototype]] 来表示,注意“[[prototype]]”和“prototype”是不一样的

function Person(){}; //函数 var p = new Person(); //对象 consol.log(p._proto_); //undefined console.log(Person._proto_); //undefined

prototype

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__的理解

最新回复(0)