• js面向对象实现方式的演变及常用方法


     面向对象三大特性:封装,继承,多态。
    1.原始模式
    var obj = new Object();  obj.name = name; obj.sex = sex;
    obj.showName = function(){                
         alert("我的名字叫"+this.name)
    }
    obj.showSex ......
    var Cat = {}   也可以用json的方式创建   原理相同
     
    2.工厂模式
    容易理解版
    function createPerson(name,sex){
         // 原料  
          var obj = new Object();
          //加工    
         obj.name = name;
         obj.sex = sex;
         obj.showName= function(){
             alert('我的名字叫'+this.name); 
         }
         //出厂
    }
    json版
    function Cat(name,color){
         return {
              name: name,
              color: color,
              showNamr: function(){
                  alert('我的名字叫'+this.name);  
              }
         }
    }
    缺点:没有new,创建多个副本,代码不够简洁
    3.构造函数模式
    function Cat(name,color){
         this.name = name;
         this.color = color;
    }
    var cat1   = new Cat("大象","黄毛");
    new的作用:1.系统自动创建一个对象 2.将内部的this指向这个创建的对象 3.返回这个对象
    缺点:依旧创建多个副本浪费内存资源 
    4.原型模式(混合法)
    function Cat(name,colot){
         this.name = name;
           this.color = color;
    }
    Cat.prototype.type = " 猫科动物";
    Cat.prototype.eat = function(){
         alert("吃老鼠");
    }
    问题注意
    alert(cat1.eat == cat2.eat); //true
    type和eat就指向同一块内存区域了
    Cat即是类也是构造函数在js里是部分家的
    构造函数首字母大写
    原型上方法属性和实例行间赋予的方法属性  行间优先级较高会替换原型上的方法属性
     
    5.面向对象常用到的方法
    prototype 属性使您有能力向对象添加属性和方法(也就就是java中的类的方法)
    constructor: 返回此对象创造它的函数的引用(构造函数)
    instanceof: 判断对象是不是 一个构造函数的实例
     
    isPrototypeOf() 判断prototype对象和实例之间的关系
    Cat.prototype.isPrototypeOf(cat1);
    hasOwnProperty() 判断属性是行间本地属性还是 集成prototype
    cat1.hasOwnProperty('name')属于自己返回true
    in 判断是否包含某个属性 不管是本地还是原型上
    “name” in cat1
    in 用来遍历所有属性
  • 相关阅读:
    mongo的常用操作——增删改查
    配置我的sublime
    mongo概念
    mongo命令
    mongo安装与配置
    node搭建http基本套路
    模块的导出入
    vue数据绑定原理
    webpack打包速度优化
    工作中的优化之数字键盘优化
  • 原文地址:https://www.cnblogs.com/LiSuSpAu/p/6414849.html
Copyright © 2020-2023  润新知