美文网首页
JS基础(三)函数-面向对象编程

JS基础(三)函数-面向对象编程

作者: 樊小勇 | 来源:发表于2019-03-25 10:47 被阅读0次

    函数

    • 函数的定义
    <script>
        /* 定义一个函数
        function 函数名(){
            代码块
        }
        需求1:写一个函数,实现1到100相加
        */
       function sum(){
           var num = 0;
           for(i=1;i<=100;i++){
            num += i;
           }
           console.log(num);
       }
        /* 调用函数,使用函数
        函数名();
       */
       sum();
       
       function fist(){
           var a = 0;
           for(j=50;j<=500;j++){
               a += j;
           }
           document.write(a+'<br>');
       }
    // 使用函数
       fist();
    
    </script>
    
    • 函数的类型
    <script>
        function sum(){
            console.log('sum函数');
        }
        sum();
        // 函数的数据类型是function,是一种特殊的对象;
        console.log('sum的类型是'+typeof sum);
        console.log('alert的类型是'+typeof alert);
        console.log('document.write的类型是'+typeof document.write);
        console.log('console.log的类型是'+typeof console.log);
        // 对象里的函数(一般称为对象的方法)
    
        var dog = {
            color:'白色',
            age:2,
            bark:function(){
                console.log('汪汪汪');
            }
        }
        // 调用对象中的函数(方法)
        dog.bark();
    
        dog.bark();
    
        dog.bark();
    
        var drink ={
            waterType:'热水',
            amount:'25L',
            pour:function(){
                console.log('您喝水');
            }
        }
       
        drink.pour();
    
    </script>
    
    • 函数绑定事件调用
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <!-- 绑定一个点击事件,通过事件调用函数
            onclick:点击事件
            onkeydowm:按下事件
        -->
        <button onclick="sum();">计算</button>
        <input type="text" onkeydown="sum();">
    </body>
    </html>
    <script>
        function sum(){
            var count = 0;
            for(var i =0;i<=100;i++){
                count += i;
            }
            console.log(count);
        }
        sum();//手动调用
    </script>
    
    • 函数绑定事件调用实例
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <h3>实现1-xxx相加的计算</h3>
        <input type="text" value="" onkeyup="showSum();">
        <button onclick="sum();">计算</button>
        <p>1-<span id="num">xxx</span>相加的结果是:<span id="total">50</span></p>
    
    </body>
    <script>
        function sum(){
            /*
            获取input的节点并且取名为$input,
            这里要注意的是为了方便可以在前面用$后面接该标签的名字便于查看
            */
            var $input = document.querySelector('input');
            // 获取输入框的值
            var num = $input.value;
            console.log(num);
            var total = 0;
            for(var i =0;i<=num;i++){
                total += i;
            }
            console.log(total);
            // 教训:innerHTML后面接的是等于号不是逗号
            document.querySelector('#total').innerHTML=total;
            document.querySelector('#num').innerHTML=num;
        }
    </script>
    </html>
    
    • 有参函数
    <script>
        // 无参函数
        // function add(){
        //     var a = 10;
        //     var b = 20;
        //     var num = a+b;
        //     console.log(num);
        // }
        // add(); 
    
    
            // 有参函数
        function add(a, b) {
            var num = a + b;
            console.log(num);
        }
        add(1, 2); 
    
    
    
        function sum(a){
            var num = 0;
            for(var i = 1;i<=a;i++){
                num += i;
            }
            console.log(num);
        }
        sum(100);
    </script>
    
    • 函数返回值
    <script>
        // 函数返回值
        function add(a,b){
            var sum = a +b;
            // return 函数返回值
            return sum;
        }
        var sum = add(10,10);
        document.write(sum);
    
    
        function add2(o, p) {
                var sum = o + p;
                // 没有return时,默认返回undefined
            }
            var sum = add2(10, 10);
            document.write(sum);   
    </script>
    
    • 声明全局变量
    <script>
        /* 声明全局变量
            全局变量,全局都可以使用引用的变量
        */
        var man = {
            name : '勇'
        }
        
    </script>
    
    • 全局变量的应用
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <!-- 把全局变量放在头部,这样的话下面的js才能访问到 
            代码的顺序从上到下
        -->
        <script src="demo5-2.js"></script>
        <script>
            // 全局变量
            var dog = {
                name: '小黑'
            }
            console.log(arr);
        </script>
    </head>
    <body>
        
        <script>
            
            console.log(dog);
            var cat = {
                name: '咖啡猫'
            }    
        </script>
    </body>
    </html>
    
    
    外部js
    var arr = [123,4,4,5,5,56];
    
    • 局部变量
    <script>
        // add(){}里的变量为局部变量
        function add(){
            var a = 10;
            var b = 5; 
            var sum = a+b;
            console.log(sum);
            // 局部作用域,局部变量,里面可以访问
        }
    
        console.log(b);
        // 外部访问不到
    </script>
    
    • 全局变量变局部变量
    <script>
      var a = 100; //全局变量
      function cal() {
        var b = 200; //局部变量
        function add() {
          var b = 300; //局部变量    必须得加var 不然即使在函数里面也是全局变量
          var c = 300; //局部变量
          var sum = a + b + c;
          return sum;
        }
        var result = add();
        document.write(result);
      }
      cal(); //将上面的var a注释的话,这里打印不出结果
    </script>
    

    面向对象编程

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <div class="name"></div>
    </body>
    </html>
    
    <script>
        /* 面向对象:根据需求要对某个区域进行js动态处理,
        定义一个对象来代表这个区域,然后把这个区域里用到的动态方法包装在函数里,
        系统化编程,当用到方法时  对象.函数名
        */
        // 定义一个名字为home的对象
        var home = {
            // 定义一个名字为fist的函数,用于存放功能实现的代码
            // 这里需要  函数名:function(){},否者会报错
            fist:function(){
                // 往name标签里添加算式的功能
                var a = 1;
                var b = 2;
                var sum = a+b;
                document.querySelector('.name').innerHTML=sum;
            }
        }
        //然后要实现这个功能的话直接调用就可以了
        home.fist();
        /*
        面向对象编程的好处,定义对象的名称是便于区别这个作用到哪个对象身上
        然后把该对象要用到的功能全部以函数的方式放在对象里面
        然后到引用的时候只需要引用对象里的函数就行
        好处便于管理功能,便于调用功能
        使得编程流程化(套路化)
        */
    </script>
    

    大纲-总结

    (一)函数的定义和作用
    1.封装多行语句,可以重复使用
    2.类型:function,对象里的一种特殊类型
    
    (二)函数的调用方式
    1.手动调用   
    2.绑定一个事件调用
    
    (三).函数传递参数(条件)
    
    (四).函数返回值
    1.使用return返回计算的结果
    2.没写return,默认返回undefined
    
    (五).作用域
    1.什么是作用域
        在某区域有作用的,成为作用域
    2.全局作用域,在全局作用域下声明的变量是全局变量,在script标签里面(子级)声明的变量为全局变量
        /*自我总结:通过全局变量可以方便js代码的处理,全局变量的可以放在
        头部按顺序来排,(类似这个用到卖座项目里面的话,后台数据的代码由于是属于全局变量
        可以放在home.html的body上面,这样一来home.js文件里的代码块就可以很好的管理)*/
    3.局部作用域和局部变量
        // 函数就是一个局部作用域,里面的变量为局部变量
        a.函数内部可以访问函数外部的变量
        b.函数外部不可以访问函数内部的变量
        c.多个作用域用作用域链进行链接
        d.没有块级作用域(区分作用域是以函数作为区分条件)
    
    (六).面向对象编程
    定义:面向对象:根据需求要对某个区域进行js动态处理,
        定义一个对象来代表这个区域,然后把这个区域里用到的动态方法包装在函数里,
        系统化编程,当用到方法时  对象.函数名
    作用:面向对象编程的好处,定义对象的名称是便于区别这个作用到哪个对象身上
        然后把该对象要用到的功能全部以函数的方式放在对象里面
        然后到引用的时候只需要引用对象里的函数就行
        好处便于管理功能,便于调用功能
        使得编程流程化(套路化)
        对象里的函数格式:
            函数名:function(){
                
            }
    
        面向对象编程的顺序:创建对象->定义获取后台数据的函数方法名->根据需求进行定义功能函数名->引用后台数据达到想要的效果
        整个编程都是围绕着创建的对象进行编程
    
    小记.函数里的变量是不限量创建的,根据要储存的东西来取名,然后到引用的时候
      格式都是为${变量名},
      html里的代码虽然引用到js里面之后没什么效果,但是留在html页面的话
      可以预防以后要更改代码的时候有个参照。
      局部变量是在函数里面用var 声明的变量,如果函数里面没有用var声明变量
      那么那个变量虽然在函数里面但却是全局变量,会对后面相同的局部变量造成影响
      路径传参是在路径后面加 ? 然后在写所传参数的 变量名称=值
      也就是http//:baidu.com?username=fanyong&age=20
      其中&为连接其他参数的符号
      突然想到了寻找想要传进去的变量名的问题,根据后台传过来的数据表,
      找到一个对应的变量要看清楚对应的对象或数组下,要指定到对应的下面才能
      不报错,对象下的属性(数组)后接点 对象名.属性 数组后的属性(对象)
       数组名[对应的属性名] 其中要注意的是属性名,可以是数字或单词,根据
       对应的写进去
    

    相关文章

      网友评论

          本文标题:JS基础(三)函数-面向对象编程

          本文链接:https://www.haomeiwen.com/subject/ebfvvqtx.html