简述JavaScript原型和原型链有什么特点-,javascript原型和原型链特点

  简述JavaScript原型和原型链有什么特点?,javascript原型和原型链特点

  原型和原型链的关系贯穿于JavaScript中的对象,在JavaScript中一切都是对象,所以原型和原型链是比较重要的概念。今天,我们来看看JavaScript中的原型和原型链。

  一、了解概念(知道有这两个名词即可)

  原型(原型)

  原型链(__proto__)

  二、了解从属关系

  Prototype=函数的一个属性:它也是一个对象{}(可以称为prototype object)。

  _ _ proto _ _=Object Object的一个属性:也是object {} (_ _ proto _即[[Prototype]])。注意:对象的_ _ proto _持有其构造函数的原型。

  a.声明一个构造函数

  函数测试(){ }

  //prototype是函数的属性。

  console.dir(测试);

  控制台. log(test . prototype);

  //Test.prototype也是一个对象。

  console . log(type of test . prototype);b.声明一个对象

  const Test=new Test();

  console.log(测试);

  //验证测试是一个对象

  console.log(测试类型);

  //__proto__是对象的属性。

  console.log(测试。_ _ proto _ _);

  控制台. log(test . prototype);

  //对象的__proto__属性存储Test.prototype

  console.log(测试。_ _ proto _ _===test . prototype);

  //测试。__proto__也是一个对象。

  console.log(测试类型。_ _ proto _ _);函数测试(){}

  控制台. log(test . prototype);//验证该函数具有prototype属性。

  let Test=new Test();

  console.dir(测试。_ _ proto _ _);//验证该对象是否具有__proto__属性。

  console.log(测试。_ _ proto _ _===test . prototype);//验证对象的__ptoto__保存了对象构造函数的原型。

  console . log(test . prototype . _ _ proto _ _===object . prototype);//Test.prototype(它是一个对象)的__proto__属性是否是该对象的prototype属性

  console . log(object . prototype . _ _ proto _ _);//原型链的顶级没有__proto__属性null三、深入认识原型链、原型和原型继承

  函数测试(){}

  let Test=new Test();

  test.a=10

  //测试。_ _ proto _ _===test . constructor . prototype

  测试。_ _ proto _ _ .b1=11//对象的__proto__属性存储对象构造函数的prototype属性。

  test . prototype . B2=11;

  测试。__proto__。_ _ proto _ _ .c1=12

  object . prototype . C2=12;

  console.log(测试);

  控制台. log(test . prototype);

  console . log(object . prototype . _ _ proto _ _);

  /*逐层解析

  *测试{

  * a=10

  * __proto__:Test.prototype{

  * b=11

  * __proto__:Object.prototype{

  * c=12

  * X__prototype__:null

  * }

  * }

  * }

  *

  * */四、总结

  不建议用__proto__直接访问。

  可以简单概括为原型节点和__proto__原型链。

  每个实例对象都有一个私有属性(称为__proto__),指向其构造函数的原型对象。这个原型对象也有自己的原型对象(__proto__),一层一层往上,直到一个对象的原型对象为空。根据定义,null没有原型,是这个原型链中的最后一环。

  某个物体。[[Prototype]]符号是用来指向SomeObject,someObject的原型。[[prototype]]===_ _ prototype _ _(JavaScript的一个非标准属性,但被很多浏览器实现)。

  Object.prototype属性代表Object的原型对象。

  构造函数创建的实例对象的[[Prototype]]指向func的Prototype属性。

  推荐视频:《JavaScript极速入门_玉女心经系列》,《独孤九贱(6)_jQuery视频教程》及以上是JavaScript中原型和原型链的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: