zoukankan      html  css  js  c++  java
  • js构造函数、原型

    1.工厂模式函数,解决多个相似对象的声明问题  

        function createObject(name, age) { //集中实例化的函数
                var obj = new Object();
                obj.name = name;
                obj.age = age;
                obj.run = function () {
                    return this.name + this.age + '运行中...';
                };
                return obj; // return 对象
            }
            var box1 = createObject('Lee', 100); //第一个实例
            var box2 = createObject('Jack', 200); //第二个实例
            alert(box1.run());
            alert(box2.run());             //保持独立

    //工厂模式解决了重复实例化的问题,但还有一个问题,那就是识别问题,因为根本无法搞清楚他们到底是哪个对象的实例。
      alert(typeof box1); //Object
      alert(box1 instanceof Object); //true



    2.构造函数

            function Box(name, age) { //构造函数模式
                this.name = name;
                this.age = age;
                this.run = function () {
                    return this.name + this.age + '运行中...';
                };
            }
            var box1 = new Box('Lee', 100); //new Box()即可
            var box2 = new Box('Jack', 200);
            alert(box1.run());
            alert(box1 instanceof Box); //很清晰的识别他从属于Box 

    3.原型

      

    //构造函数:
            function Bbq(name,age){
                this.name=name;
                this.age=age;
                this.run=function(){
                    return this.name+this.age+'退休';
                }
            }
            var b1=new Bbq('abc',66);
            var b2=new Bbq('abc',66);
            alert(b1.run == b2.run); //false,
            
            
    //原型:
            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.run == box2.run); //true,方法的引用地址保持一致
  • 相关阅读:
    Caused by: org.xml.sax.SAXParseException: The content of elements must consist of well-formed charac
    java反射方法
    错误解决:There is no getter for property named 'id' in class 'java.lang.String'
    java的AOP
    Java预置的注解
    mysql 数据库自动备份
    微信小程序
    关于 IOC和spring基本配置详解
    关于Spring配置的一些东西
    关于Spring的一点东西
  • 原文地址:https://www.cnblogs.com/luhailin/p/6592841.html
Copyright © 2011-2022 走看看