zoukankan      html  css  js  c++  java
  • 关于面向对象封装的一些理解

    -----》 为了解决从原型对象生成实例的问题,Javascript提供了一个构造函数(Constructor)模式。

       

      1.构造函数模式

      

    //构造函数模式
    
        function Cat (name,color){
            this.name = name;
            this.color = color;
        }
    
        var cat1 = new Cat('大毛',"红色");
        var cat2 = new Cat('二毛','黑色');
    
        console.log(cat1.name) //大毛
        console.log(cat1.constructor == Cat); //true;同时指向的Cat; 
        console.log(cat2.constructor == Cat); //true;同时指向的Cat;
    
        //存在的问题  我们在函数内添加俩个不变的属性,每一次生成一个实例,都必须为重复的内容,占用内存;
        // 这样就使得每个实例同时指向原型对象
    
        Cat.prototype.type = '猫科动物'
        Cat.prototype.eat = function (){
            alert('吃老鼠')
        }
    
    
    
        // 为了配合prototype属性,Javascript定义了一些辅助方法,帮助我们使用它。
    
        //这个方法用来判断,某个proptotype对象和某个实例之间的关系。
        alert(Cat.prototype.isPrototypeOf(cat1)); //true
      alert(Cat.prototype.isPrototypeOf(cat2)); //true
        
        //hasOwnProperty 判断属性本地属性还是继承属性;
        alert(cat1.hasOwnProperty("name")); // true
      alert(cat1.hasOwnProperty("type")); // false
    
        // 每个实例对象都有一个hasOwnProperty()方法,用来判断某一个属性到底是本地属性,还是继承自prototype对象的属性。
        alert(cat1.hasOwnProperty("name")); // true
      alert(cat1.hasOwnProperty("type")); // false
    
        // in运算符可以用来判断,某个实例是否含有某个属性,不管是不是本地属性。
        alert("name" in cat1); // true
      alert("type" in cat1); // true
    
        // in运算符还可以用来遍历某个对象的所有属性。
        for(var prop in cat1) { alert("cat1["+prop+"]="+cat1[prop]); }
  • 相关阅读:
    解决ORA-00257: 归档程序错误。在释放之前仅限于内部连接
    linux 监控脚本运行时间
    sqlserver中查询表字段的sql语句
    gpg无法生成密钥对的问题
    jdbc连接oracle的几种格式
    windows中使用tracert命令追踪路由信息
    MySQL编码问题探究
    Apache Storm Installation
    linux的swap相关
    awk
  • 原文地址:https://www.cnblogs.com/my-effort/p/5737981.html
Copyright © 2011-2022 走看看