• js 面向对象讲解


    1.面向对象概念

      1)什么是面向对象:  oop    是一种编程的思想, 体现的是生活逻辑

           2) 面向对象和面向过程:

            面向过程:

            1:大量的全局变量
            2:命名冲突
            3:顺序执行(一步一步一步........)

           面向对象三大特性:封装  继承  多态(js没有多态的)

                 js:  封装抽象继承(借)

           3) 写js面向对象代码特点:
                高内聚(在一个功能模块里面所有的代码必须紧密相邻)
                低耦合(模块和模块之间尽量 少 关联)

    2.构造函数

        构造函数- >   new 对象(实例化对象) ->   存储数据。
               注:构造函数(为了区分普通函数和构造函数  构造函数的首字母大写)
     
           构造函数  ->  去实例化对象.
         eg:写一个对象去描述一个人
            var person = new Object();
            person.name = 'wangshuai';
            person.age = '20';
            person.show = function(){
                return '好帅'
            }

            去描述100个人(复制?????)   封装起来
                function person(name,age){
                    var obj = new Object();         //工厂
                    obj.name = name;               //加工
                    obj.age = age;
                    obj.show = function(){
                        return obj.name;
                    }
                    return obj;                     //出厂
                }
                var person1 = person('wangshuai','20');
                var person2 = person('xiaom','10');
                var person3 = person('ee','30');
           
                上述代码分析:
                    在创建每一个人的时候(调用person),在函数内部每次都会new 一个对象          
                在构造函数里面  实例化对象的时候。 自动return 出一个this   指向当前这个对象。

      3:普通函数 和构造函数的差别:  
    例:          
    function person(){    
            return this;
        }
        var p1 = new person();    //实例化对象     person构造函数。
        console.log(p1)
     
            普通函数如果函数内部没有return的时候,返回的是一个undefined.
            构造函数如果内部没有return的时候,再实例化的对象的时候(new 对象),自动return出 this 指向当前构造出来的这个对象
            
    4. prototype      
            原型对象:
                记录了一个函数公共的属性和方法。
                可以拓展属性和方法
                节约内存提升性能
                继承属性和方法
    例: function Person(name,age){
            this.name = name;
            this.age = age;
        }
        Person.prototype.show = function(){
            this.name;
        }
        var p1 = new Person('ws',10);
        var p2 = new Person('dd',20);
        console.log(p1.show == p2.show)
     
  • 相关阅读:
    MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
    利用scp传输文件小结
    SSH无密码登录配置小结
    vim 清空
    mysql root用户 远程登录其它机器,看不到数据库
    音视频编解码开发经验2
    nginx、php-fpm、mysql用户权限解析
    ffmpeg处理RTMP流媒体的命令 发送流媒体的命令(UDP,RTP,RTMP)
    音视频编解码开发经验1
    mysql LAST_INSERT_ID 使用与注意事项
  • 原文地址:https://www.cnblogs.com/wangwenxin123/p/10865460.html
Copyright © 2020-2023  润新知