面向对象,有很多函数没有的功能

例如 :

继承 子级面向对象可以继承父级面向对象的内容,减少冗余代码的书写
多态  在不同的情况下,面向对象可以执行实现不同的功能

面向对象,在封装的过程中,与函数有些类似

也是将 程序封装起来,重复的调用使用
面向对象,又有函数所部具备的功能

面向对象编程:

面向对象 中的 对象 指的就是 对象数据类型 object
面向对象 本质就是 针对  对象类型的 编程
对象中有属性和属性值,属性值可以是 各种数据类型 基本数据类型和引用数据类型,数据类型可以存储数据
同时还可以存储函数,函数中可以存储 要执行的程序
就可以将 程序需要的数据和程序内容,都存储在对象中
    // 函数语法
    function add(a, b) {
        let res = 0;
        for (let i = a; i <= b; i++) {
            res += i;
        }
        return res;
    }
    console.log( add(1,100) );  //5050

    // 对象语法:
    const obj = {
        start : 1,
        end : 100,
        // 直接写匿名函数,this指向是obj对象,this.start和this.end指向的是obj中的属性
        // 写成箭头函数,this是父级程序的this,也就是obj的this
        // 对象没有this,箭头函数的this是window,不能正确调用数据
        fun: function() {
            let res = 0;
            for (let i = this.start; i <= this.end; i++) {
                res += i;
            }
            return res;
        }
    }
    console.log( obj.fun() );  //5050

试一试

创建对象的语法:

工厂模式: 创建内容相同的对象,只是参数不同

    // 目前 通过 一个 函数 来 创建一个对象
    // 对象中的数据,是 函数 输入的参数
    // 返回值是 创建出来的对象
    function createObj(start , end){
        // 创建一个对象
        const obj={};
        // 给对象添加一个属性,属性名称是 start
        // 这个属性的属性值 是 start 参数存储的数值
        obj.start = start;
        // 给对象添加一个属性,属性名称是 end
        // 这个属性的属性值 是 end 参数存储的数值
        obj.end = end;
        // 给对象添加一个方法
        obj.fun = function(){
            let res = 0;
            for (let i = this.start; i <= this.end; i++) {
                res += i;
            }
            return res;
        }
        // 返回创建的对象
        return obj;
    } 

    // 创建一个求 1-100和的对象
    const obj1 = createObj(1,100);
    console.log(obj1.fun());    //5050
    console.log(obj1);    //Object
    
    // 创建1个求50-100和的对象
    const obj2 = createObj(50,100);
    console.log(obj2.fun());    //3825
    console.log(obj2);  //Object

试一试


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。