• Javascript面向对象编程--原型(prototype)


    在Javascript中,我们创建的每个函数都有一个prototype属性,这个属性是一个对象;它的用途是包含可以有特定类型的所有实例共享的属性和方法。可以这么来理解:prototype通过调用构造函数而创建的那个对象的原型对象。

    使用原型的好处:可以让所有对象实例共享它所包含的属性和方法。也就是说,不必在构造函数中定义对象信息,而是可以直接将这些信息添加到原型中。

        //构造方法
            function Box(name,age){  
               
                this.name = name;        //添加属性
                this.age = age;
                this.run = function(){    //添加方法
                    return this.name + this.age + '运行中...';
                };
            };
            var box1 = new Box('lee',100);  //实例化
            alert(box1.run());
    
    
        //原型方法
            function Box(){}
    
            Box.prototype.name = "Lee";  //原型属性
            Box.prototype.age = 100;
            Box.prototype.run = function(){   //原型方法
                return this.name + this.age + '运行中';
            };
            var box1 = new Box();
            var box2 = new Box();
            alert(box1.name);
            alert(box1.run());

    区分实例方法与原型方法:

    如果是实例方法,不同的实例化,他们的方法地址是不一样的,是唯一的;

    如果是原型方法,那么他们地址是共享的,大家都是一样的;

    注:1,在原型模式声明中,多了两个属性,这两个属性都是创建对象时自动生成的。__proto__属性是实例指向原型对象的一个指针,它的作用就是指向构造函数的原型属性construct。通过这两个属性,就可以访问到原型属性和方法了。

          2,判断一个对象是否指向了该构造函数的原型对象,可以使用isPrototypeOf()方法来测试;

              eg:alert(fun_name.prototype.isPrototypeOf(name));   //只要实例化,即都会指向原型对象;

    原型模式的执行流程:

         1,先查找构造函数实例里的属性或方法,如果有,立刻返回;

         2,如果构造函数实例里没有,则去它的原型对象里找,如果有,就返回;

  • 相关阅读:
    对于函数中多个返回值的处理
    Docker-compose 安裝单机版redis
    设计模式七大设计原则
    UML 设计技巧
    使用Docker 容器配置nexus3.29 私有仓库
    分布式消息Kafka通信原理分析
    分布式消息Kafka通信
    使用docker 搭建nexus3.29
    分布式消息Kafka初步认识及基本应用
    Dubbo 常用配置及源码分析
  • 原文地址:https://www.cnblogs.com/cbhello/p/3333547.html
Copyright © 2020-2023  润新知