• 07 函数&对象


    函数&对象

      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <meta http-equiv="X-U-Compatible" content="IE-edge">
      6     <meta name="viewport" content="width=device-width,initial-scale=1">
      7     <title>函数&对象</title>
      8 </head>
      9 <body>
     10     <h1>函数</h1>
     11     <p>函数:就是把将一些语句进行封装,然后通过调用的形式,执行这些语句</p>
     12     <p>function:是一个关键字。中文是“函数”、“功能”。
     13         函数名字:命名规定和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头。
     14         参数:后面有一对小括号,里面是放参数用的。
     15         大括号里面,是这个函数的语句。</p>
     16     <script type="text/javascript">
     17         //  申明
     18         function add(x,y) {
     19             var sum = x + y;
     20             console.log(sum);
     21             return sum;
     22         }
     23 
     24         //  调用
     25         var sum = add(1,2);
     26         console.log(sum);
     27 
     28         //  匿名函数
     29         var multipy = function (x,y) {
     30             return x*y;
     31         };
     32         console.log(multipy(2,5));
     33 
     34         //  伪数组 arguments  只在函数中使用  类似于python里的 args和kwargs
     35         function args(m,n) {
     36             console.log(args.length);  //获取形参的个数
     37             console.log(arguments);  //获取实参
     38             console.log(arguments.length); //获取实参的个数
     39             console.log(arguments[0]);  //  获取第一个实参
     40             // arguments.push('4');  //  不可以修改  伪数组 会报错
     41         }
     42         args(1,2);
     43         args(1,2,3);
     44         args(1,2,3,4);
     45     </script>
     46 
     47     <h1>面向对象</h1>
     48     <script type="text/javascript">
     49         var eat = function (food) {
     50           console.log(this.name + ' is eating ' + food)
     51         };
     52         //  1.使用Object或对象字面量创建对象
     53         var obj = {'name':'晓钢','age':18,'eat':eat};  // 第一种,也就是json对象,也是python里的字典
     54         var obj1 = new Object();  // 第二种 new object
     55         obj1.name = '晓康';
     56         obj1.age = 28;
     57         obj1.eat = eat;  // 也可以指定方法
     58         console.log(obj,typeof obj);  // {name: "xg", age: 18} "object"
     59         console.log(obj1,typeof obj1); // {name: "xg", age: 18} "object"
     60         console.log(obj.age); // 调用对象属性
     61         obj.eat('rice');  // 调用属性方法
     62         obj1.eat('apple');
     63 
     64         //  2.工厂模式创建对象  就是把对象的字面量用函数包装,可以不听的调用来生成对象
     65         var createObj = function (name,age,func) {
     66             var obj = new Object();
     67             obj.name = name;
     68             obj.age = age;
     69             obj.func = func;
     70             return obj
     71         };
     72         var obj2 = createObj('小肖',12,eat);
     73         var obj3 = createObj('小红',32,eat);
     74         var obj4 = createObj('小干',22,eat);
     75         console.log(obj2.name);
     76         console.log(obj3.age);
     77         obj3.func('shit');
     78 
     79         //  3.构造函数模式创建对象
     80         /* 几点说明
     81         1.js中并不存在创建构造函数的特殊语法,其与普通函数唯一的区别在于调用方法。
     82         对于任意函数,使用new操作符调用,那么它就是构造函数;不使用new操作符调用,那么它就是普通函数。
     83         2.约定构造函数名以大写字母开头,普通函数以小写字母开头,这样有利于显性区分二者。如 new Array()
     84         3.使用new操作符调用构造函数时,会经历4个步骤
     85         (1)创建一个新对象;
     86         (2)将构造函数作用域赋给新对象(使this指向该新对象);
     87         (3)执行构造函数代码;
     88         (4)返回新对象;4个阶段。
     89          */
     90         function Person(name,age) {
     91             this.name = name;
     92             this.age = age;
     93             this.eat = eat;
     94         }
     95         function Fruit(name,price) {
     96             this.name = name;
     97             this.price = price;
     98         }
     99         var p1 = new Person('小明',18);
    100         var p2 = new Person('小金',28);
    101         var f1 = new Fruit('苹果',12);
    102         var f2 = new Fruit('芒果',8);
    103         console.log('p1:' + typeof p1,' | p2:' + typeof p2);
    104         console.log('f1:' + typeof f1,' | f2:' + typeof f2);
    105         console.log('p1 instanceoof Person  :  ',p1 instanceof Person);
    106         console.log('p1 instanceof Fruit  :  ',p1 instanceof Fruit);
    107         console.log('f1 instanceof Person  :  ',f1 instanceof Person);
    108         console.log('f1 instanceof Fruit  :  ',f1 instanceof Fruit);
    109         console.log(p1.name + "|" + p2.name+ "|" +f1.name + "|" + f2.name);
    110         p1.eat('香蕉');
    111 
    112         //  4.原型模式创建对象
    113         function Student() {
    114             this.name = 'easy';
    115             this.age = 20;
    116         }
    117         Student.prototype.alertName = function(){
    118             alert(this.name);
    119         };
    120         var stu1 = new Student();
    121         var stu2 = new Student();
    122         stu1.alertName();  //easy
    123         stu2.alertName();  //easy
    124         alert(stu1.alertName == stu2.alertName);  //true 二者共享同一函数
    125     </script>
    126 </body>
    127 </html>
  • 相关阅读:
    委托、事件入门(转)
    ArcToolBox——Clip 批量处理
    Geometry 对象浅析 ( 作者:Flyingis)
    AE数据加载
    ADO.NET 的最佳实践技巧(转)
    android调用.net wcf 服的方法
    winform调用dos命令
    变位词实现 编程珠玑一处错误
    元素翻转
    80X86学习笔记转移指令
  • 原文地址:https://www.cnblogs.com/znyyy/p/11095898.html
Copyright © 2020-2023  润新知