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

     2022-03-15     613

关键词:

原型编程范型

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

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

  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基于原型的面向对象

主题一、原型 一、基于原型的语言的特点 1只有对象,没有类;对象继承对象,而不是类继承类。 2 “原型对象”是基于原型语言的核心概念。原型对象是新对象的模板,它将自身的属性共享给新对象。一个对象不但... 查看详情

基于原型与基于类的继承

...dinheritance【发布时间】:2010-10-2309:32:50【问题描述】:在JavaScript中,每个对象同时是一个实例和一个类。要进行继承,您可以使用任何对象实例作为原型。在Python、C++等中,有类和实例作为单独的概念。为了进行继承,您必须... 查看详情

理解javascript的原型属性

...,使用基于类的模型实现:类及对象实例区别对待。但在JavaScript中没有类的概念,取而代之的是一切皆对象。JavaScript中的继承通过原型继承实现:一个对象直接从另一对象继承。对象中包含其继承体系中祖先的引用——... 查看详情

javascript中原型对象的彻底理解

一、什么是原型原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承。1.1函数的原型对象?在JavaScript中,我们创建一个函数A(就是声明一个函数),那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一... 查看详情

javascript继承

...一个对象来说重要的是它能做什么,而不是它从哪里来。JavaScript提供了一套更为丰富的代码重用模式。它可以模拟那些基于类的模式,同时它也可以支持其他更具表现力的模式。JavaScript是一门基于原型的语言,这意味着对象直... 查看详情

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

一、原型式继承该继承模式是由道格拉斯*克罗克福德在2006年提出的实现继承的方法.模式的基本思路:借助原型可以基于已有的对象创建新的对象,同时还不必因此创建自定义类型。代码如下:functionobject(o){functionF(){//定义一个F类型... 查看详情

深入理解js继承和原型链

...于类的面向对象语言(Java或者C++)的开发者来说,JavaScript的语法是比较怪异的,这是由于JavaScript是一门动态语言,而且它没有类的概念( ES6新增了class关键字,但只是语法糖,JavaScript仍旧是基于原型)。涉及到继承... 查看详情

对象的继承(代码片段)

原文地址:https://wangdoc.com/javascript/JavaScript语言的继承通过class,而是通过原型对象(prototype)实现。原型对象概述构造函数的缺点同一个构造函数的多个实例之间,无法共享属性,从而造成对系统资源的浪费。这个问题的解决... 查看详情

javascript的原型系统是怎样构建起来的

  和传统的面向对象语言通过类实现继承的方式不同,JavaScript中不存在传统意义的"类",JavaScript是通过构造函数来实现继承的。JavaScript的构造函数常常被混淆为"类",只是因为它们承担着同样的功能,然而它们实现继承的方... 查看详情

javascript-----------------原型式继承

 思想:借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。为了达到这个目的,看看下面的实现方式  1functionobject(o){2functionF(){34}5F.prototype=O;6returnnewF();7};在上面的代码段中主要做了哪些事情尼?... 查看详情

javascript面向对象编程高速构建继承关系之整合原型链

前面我们铺垫了非常多细节。是为了让大家更加明晰prototype的使用细节;如今能够将前面的知识整合起来,写一个函数用于高速构建基于原型链的继承关系了:functionextend(Child,Parent){ varF=function(){}; F.prototype=Parent.prototype; Child.proto... 查看详情

javascript基于原型的面向对象系统(代码片段)

  我们知道在JavaScript中一切(引用类型)都是对象,对象是属性的集合,但是JavaScript中的对象到底是怎么创建的呢?在Java中是通过实例化类来创建一个对象,对象总是从类中的创建而来;在JavaScript... 查看详情

菜鸟快飞之javascript对象原型继承

...西只是知其然,不知其所以然。就像这个继承,刚开始学JavaScript就听人说了JavaScript几大核心,但是自己平时似乎都没怎么用到,所以一直不明白为什么需要这些东西,面试还总是问这些。  但是随着一点点学习,也有去看过j... 查看详情

javascript中的原型继承

...把这个请求委托给它自己的原型。 下面我们来谈论下javascript的原型继承:1.所有的数据都是对象:  js有两套机制类型:基本类型和对象类型,基本类型包括  查看详情

浅话javascript的继承

javascript的继承和java或C#的继承是不一样的,后者是基于类的继承,而javascript是通过原型来继承的。所以,先得理一理原型是个什么鬼。 当一个函数对象被创建时,Function构造器产生的函数对象会运行类似这样一些代码:this.... 查看详情

javascript原型链

前言JavaScript不包含传统的类继承模型,而是使用prototypal原型模型。虽然这经常被当作是JavaScript的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现JavaScript中的原型继... 查看详情

javascript原型链

前言JavaScript不包含传统的类继承模型,而是使用prototypal原型模型。虽然这经常被当作是JavaScript的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现JavaScript中的原型继... 查看详情

javascript简单继承

...C++开发人员习惯使用继承来开发项目,所以当他们想学习JavaScript语言时,第一个问题一般是:“我怎么在JavaScript中使用继承?”。实际上JavaScript使用了一种不同于C#或C++的方法来创建面向对象语言。它是基于prototype的语... 查看详情