javascript 原型的简单理解

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)