基于原型继承的JavaScript对象系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于原型继承的JavaScript对象系统相关的知识,希望对你有一定的参考价值。

原型编程范型

  基于原型链的委托机制就是原型继承的本质。

  原型编程范型的基本原则:

  1. 所有的数据都是对象。

  2. 要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它。 

  function Person(name){

    this.name=name;

  }

  Person.prototype.getName=function()

  {

    return this.name=name;

  }

  var a=new Person(‘sven‘);

  console.log(a.name);//sven

  console.log(a.getName());//sven

  console.log(Object.getPrototypeOf(a)===Person.prototype);//true

  在这里Person不是类,而是函数构造器,JS的函数调用既可以作为普通函数被调用,也可以作为构造器被调用,当使用new运算符来调用函数的时,此时的函数就是一个构造器。用new运算符来创建对象的过程,实际上也只是先克隆Object.prototype对象,再进行一些其他额外操作的过程。

 

 

  3. 对象会记住它的原型。

    在js原型链查找机制中,每个对象至少应该先记住它自己的yuanx;JS给对象提供了一个名为_proto_的隐藏属性,某个对象的_proto_属性会指向它的构造器的原型对象。

 

  4.  如果对象无法响应某个请求,它会把这个请求委托给它自己的原型。

  当一个对象无法响应某条请求的时候,它会顺着原型链把请求传递下去,直到遇到一个可以处理该请求的对象为止。虽然js的对象最初都是由Object.prototype对象克隆而来的,但对象构造器的原型并不仅限于Object.prototype上,而是可以动态地指向其他对象。

  var A=function(){};
  A.prototype={name:‘sven‘};

  var B=function(){};
  B.prototype=new A();

  var b=new B();
  console.log(b.name);//sven

  




以上是关于基于原型继承的JavaScript对象系统的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript原型链

JavaScript 基于原型链的继承

javascript原型的理解

基于原型与基于类的继承

JavaScript继承与原型链

JavaScript之面向对象学九(原型式继承和寄生式继承)