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中的原型 1.什么是原型? 2.原型的产生

简单理解javascript原型及原型链

简单理解javascript原型及原型链原型和原型链式javascrpit中很重要的概念,但是无论书上还是网上 ,不少关于javascript原型和原型链的解释都不易理解,所以本人在此介绍一下自己的简...

javascript的原型链简单了解

在chrome的控制台中查看对象的结构树console.dir(document); //比如查看document对象的结构树1.在js中几乎一切都是对象,可以和对象一样直接调用其方法,只有null...

深入理解javascript原型和闭包(6)——继承

为何用“继承”为标题,而不用“原型链”?   原型链如果解释清楚了很容易理解,不会与常用的java/C#产生混淆。而“继承”确实常用面向对象语言中最基本的概念,但是java中的继承与javascri...

javascript中继承(一)-----原型链继承的个人理解

【寒暄】好久没有更新博客了,说来话长,因为我下定决心要从一个后台程序员转为Front End,其间走过了一段漫长而艰辛的时光,今天跟大家分享下自己对javascript中原型链继承的理解。 总的...

深入理解javascript原型和闭包(2)——函数和对象的关系

转载自:http://www.cnblogs.com/wangfupeng1988/p/3978035.html 上文(理解javascript原型和作用域系列(1)——一切都是对象)已经提到...

深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】

先解释一下什么是“自由变量”。 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。如下图 如上程序中,在调用fn()...

深入理解javascript原型和闭包(16)——完结

之前一共用15篇文章,把javascript的原型和闭包。   首先,javascript本来就“不容易学”。不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学javascript。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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