• 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,如果构造函数实例里没有,则去它的原型对象里找,如果有,就返回;

  • 相关阅读:
    JavaScript数字和字符串转换示例
    Angular CLI 使用教程指南参考
    angular2 post以“application/x-www-form-urlencoded”形式传参的解决办法
    Arison [JS]window.location获取url各项参数详解
    $.ajaxComplete()
    angular2 编写公用组件
    获取本周、本季度、本月、上月的开端日期、停止日期
    Angular2
    轮播图插件 SuperSlide2.1滑动门jQuery插件
    书写Css文件要点
  • 原文地址:https://www.cnblogs.com/cbhello/p/3333547.html
Copyright © 2020-2023  润新知