javascript 原型的简单理解

原创 2016年05月30日 13:56:00

JavaScript中对象的prototype属性:

JavaScript中对象的prototype属性,是用来返回对象类型原型的引用的。我们使用prototype属性提供对象的类的一组基本功能。并且对象的新实例会”继承”赋予该对象原型的操作。

实例:
(1).系统类库

var arr1=new Array(32,45,78,85);
        var arr2=new Array(53,12,55,21);

        //原型继承
        Array.prototype.sum=function()
        {
            var result=0;

            for (var i = 0; i < this.length; i++) {
                result+=this[i];
            }

            return result;
        };

        alert(arr1.sum());
        alert(arr2.sum());

(2)自己写的类

function createPerson(name,qq)
        {
            this.name=name;
            this.qq=qq;
        }

        createPerson.prototype.showName=function()
        {
            alert('我的名字是:'+this.name);
        };
        createPerson.prototype.showQQ=function()
        {
            alert('我的QQ号是:'+this.qq);
        };

        var obj=new createPerson('blue','342616');
        var obj2=new createPerson('xian','363286');

        obj.showName();
        obj.showQQ();

        obj2.showName();
        obj2.showQQ();

在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。

1、该对象被类所引用,只有函数对象才可引用;

2、在new实例化后,其成员被实例化,实例对象方可调用。
同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。

JavaScript通过一种链接机制来支持继承,而不是通过完全面向对象语言(如Java)所支持的基于类的继承模型。每个JavaScript对象都有一个内置的属性,名为prototype。prototype属性保存着对另一个JavaScript对象的引用,这个对象作为当前对象的父对象。

当通过点记法引用对象的一个函数或属性时,倘若对象上没有这个函数或属性,此时就会使用对象的prototype属性。当出现这种情况时,将检查对象prototype属性所引用的对象,查看是否有所请求的属性或函数。如果prototype属性引用的对象也没有所需的函数或属性,则会进一步检查这个对象(prototype属性引用的对象)的prototype属性,依次沿着链向上查找,直到找到所请求的函数或属性,或者到达链尾,如果已经到达链尾还没有找到,则返回undefined。从这个意义上讲,这种继承结构更应是一种“has a”关系,而不是“is a”关系

版权声明:本文为博主原创文章,未经博主允许不得转载。

彻底理解JavaScript原型

 原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有"[[prototype]]"属性,函数对象有"prototype"属性,原型对象有"constructor...
  • wxw_317
  • wxw_317
  • 2015年11月03日 16:14
  • 5576

JavaScript prototype原型和原型链详解

用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,...
  • i10630226
  • i10630226
  • 2015年10月21日 14:25
  • 1472

个人对"原型"和"原型链"的理解

Javascript语言可能太过灵活,导致一些学C#学Java等姑且说叫"正统的面向对象的语言"的人觉得Javascript面向对象的部分凌乱不堪,上网看别人对原型和原型链的理解都是各抒己见,各有各的...
  • cuiyh1993
  • cuiyh1993
  • 2015年07月22日 23:07
  • 1866

彻底理解javascript中的原型链

要弄清楚原型链就要先弄清楚 function 类型,在javascript中没有类的概念,都是函数,所以它是一门函数式的编程语言。类有一个很重要的特性,就是它可以根据它的构造函数来创建以它为模板的对象...
  • ljl157011
  • ljl157011
  • 2014年02月22日 13:38
  • 12391

深度理解JS对象及原型

对象概述 1.JavaScript中,除了string,number,boolean,null,undefined,其他数据都是对象,甚至包括数组、日期和函数。 2.ECMA-262定义:对象是属性的...
  • sinat_30975247
  • sinat_30975247
  • 2015年11月15日 18:53
  • 3131

深入javascript面向对象,js的原型链、继承

进阶面向对象——————————————————————–在JS源码中,系统对象也是基于原型的程序, 尽量不要去添加和修改系统对象的方法 包装对象——————————————————————–基本类型...
  • u014420383
  • u014420383
  • 2015年08月15日 08:57
  • 1227

简单理解JavaScript中的原型

简单理解JavaScript中的原型 1.什么是原型? 2.原型的产生
  • ganyingxie123456
  • ganyingxie123456
  • 2017年03月13日 11:26
  • 112

JS重点整理之JS原型链彻底搞清楚

彻底搞清楚原型链。看图理解原型链。从对象、原型对象、原型链进行一步步分析,每一块都有根据自己的理解画图,更容易理解,又有例子代码佐证。 最普通的对象:有__proto__属性(指向其原型链...
  • sinat_21274091
  • sinat_21274091
  • 2016年10月06日 01:58
  • 8735

JavaScript中原型对象的彻底理解

一、什么是原型 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承。 1.1 函数的原型对象​ 在JavaScript中,我们创建一个函数A(就是声明一个...
  • u012468376
  • u012468376
  • 2016年11月10日 20:43
  • 10621

JavaScript原型,原型链 ? 有什么特点?

没有图片的代码可以发到以下两种在线工具,获取其他帮助在线调试。 www.jsbin.com,不需要登录,即发即预览,速度不靠谱; runjs.cn,国内访问速度快,可以上传图片,需要登录,需要用户...
  • camillea
  • camillea
  • 2016年02月04日 18:01
  • 6709
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript 原型的简单理解
举报原因:
原因补充:

(最多只允许输入30个字)