对象就是集合 任意值的集合

对象的简单了解

image.png

  1. var cat = {
  2. // 基本数据类型
  3. 'name':'Tom',
  4. 'age':4,
  5. // 数组
  6. 'family':['father','mom'],
  7. // 放置函数
  8. 'speak':function(){
  9. console.log('喵喵~');
  10. },
  11. // 继续存储对象
  12. 'friend':{
  13. 'name':'Jerry',
  14. 'age':4
  15. }
  16. };

如何使用对象

  1. // 可以通过new实例化构造函数
  2. var cat = new Object();
  3. var cat = {};//这两个都表示空对象
  4. //es5 Object.create() 存在兼容性
  1. var cat = {
  2. // 基本数据类型
  3. 'name':'Tom',
  4. 'age':4,
  5. // 数组类型
  6. 'family':['father','mom'],
  7. // 放置函数类型
  8. 'speak':function(){
  9. console.log('喵喵~');
  10. },
  11. // 继续存储对象
  12. 'friend':{
  13. 'name':'Jerry',
  14. 'age':4
  15. }
  16. };
  17. // console.log(cat);
  18. cat.name='Tim';
  19. cat['name']='Tim';//修改 写操作
  20. cat.type='加菲猫';
  21. console.log(cat.name);//查询 读操作
  22. console.log(cat['name']);//查询 读操作
  23. console.log(cat.type);
  24. delete cat.type;
  25. console.log(cat.type);
  26. //如何检测一个对象是否拥有该属性
  27. console.log('type' in cat);
  28. //循环遍历对象 循环输出每一个属性名
  29. for(var p in cat){
  30. console.log(p);
  31. console.log(cat[p]);
  32. //console.log(cat.p);不能使用点 因为点表示 .属性
  33. }

面向对象的变成思想 万物皆可对象

new实例化构造函数

image.png

封装函数

image.png

匿名函数

image.png

构建函数

image.png

添加属性的方法

image.png

什么是函数

image.png

  1. // 函数是否也可以? -- 了解一下
  2. function add(num1,num2){
  3. return num1+num2;
  4. }
  5. add.sex='male';
  6. add.setSex=function(sex){
  7. this.sex = sex;
  8. }
  9. console.log(add.sex);//male
  10. console.log(add.setSex('female'));
  11. console.log(add.sex);//female
  12. console.log(add(1,4));

函数的定义:三种

  1. //字面量 function声明
  2. function add(){
  3. }
  4. add();
  5. //var赋值表达式
  6. var add = function(){
  7. };
  8. add();
  9. //构造函数 必须是字符串形式 效率比较差,首先解析字符串变量 其次再实例化函数
  10. var add = new Function('num1','num2','return num1+num2');
  11. add();
  12. //预加载
  13. // console.log(add());
  14. // function add(){
  15. // return 1;
  16. // }
  17. // var add = function(){
  18. // return 1;
  19. // };
  20. // console.log(add());
  21. //因为JavaScript中没有块级作用域的概念 {}只是代码块
  22. // if (true) {
  23. // function add(){
  24. // }
  25. // } else {
  26. // function jian(){
  27. // }
  28. // }//这种是不不运行的 不被允许的如果要运行的话得用()把函数包裹起来
  1. // 只要function不打头,就可以调用
  2. (function(){
  3. console.log(1);
  4. })();
  5. +-~!function(){
  6. console.log(2);
  7. }();
  8. console.log(function(){
  9. return 3;
  10. }());

递归调用 — 阶乘

递归调用 最经典的例子阶乘
5! = 54321=120;
4! = 5321=24;
5! = 5
4;

  1. function factorial(num){
  2. if (num<=1) {return 1}
  3. return num*factorial(num-1);
  4. //return 5*4!
  5. }
  6. console.log(factorial(5));
  7. console.log(factorial(4));
  1. var operation = {
  2. add:function(num1,num2){
  3. return num1+num2;
  4. },
  5. substract:function(num1,num2){
  6. return num1-num2;
  7. },
  8. '@':function(){
  9. console.log('@');
  10. },
  11. key:function(){
  12. }
  13. };
  14. var key = 'add';//把add函数赋值给了key 调用变量 点是不行的,必须使用[]
  15. // console.log(operation.key(1,2));
  16. console.log(operation[key](1,2));

image.png

参数的使用

  1. function add(num1,num2){
  2. return num1+num2;
  3. }
  4. add(1,2);
  5. // 形参 = 实参
  6. // num1 = 1
  7. // num2 = 2
  8. var person={};
  9. function setPerson(obj){
  10. obj.name = 'xm';
  11. }
  12. setPerson(person);
  13. console.log(person);
  14. //就是将person对象的地址,赋予给obj 他们俩指向同一个引用
  15. // obj = person;

幂运算

image.png

参数的个数

  1. 形参 == 实参

    1. function add(num1,num2){
    2. return num1+num2;
    3. }
    4. add(1,2);
  2. 实参 < 形参

    1. //需求:
    2. // 1、如果只传入一个值,表示默认计算2次幂
    3. // 2、如果传入2个参数,表示计算几的几次幂
    4. //if else
    5. // function pow(base,power){
    6. // if (!power) {power=2;}
    7. // return Math.pow(base,power);
    8. // }
    9. // console.log(pow(3//9
    10. // console.log(pow(3,3));//27
    11. // function pow(base,power){
    12. // // if (!power) {power=2;}
    13. // //或运算:两个都是假才为假 只要有一个真就是真
    14. // // power = power || 2;
    15. // return Math.pow(base,power);
    16. // }
    17. // console.log(pow(3));//9
    18. // console.log(pow(3,3));//27
  3. 实参 > 形参

    1. function add(){
    2. //arguments类数组 -- add(1,2,3) arguments[0]=1 arguments[1]=2
    3. if (arguments.length==0) {return;}
    4. var sum = 0;
    5. for(var i=0;i<arguments.length;i++){
    6. sum+=arguments[i];
    7. }
    8. return sum; //类数组 不是数组
    9. }
    10. console.log(add());
    11. console.log(add(1,2,3,4,5));//15
    12. console.log(add(1,2,3));//6

arguments

类数组 不是数组,只是类似数组,是类似数组的对象。

  1. {
  2. '0':1,
  3. '1':2,
  4. '2':3,
  5. length:3
  6. }

使用

  1. function fn(name){
  2. arguments[0]="";
  3. console.log(name);
  4. }
  5. fn('xm');
  6. //空字符串 arguments和我们的形参都指向了同一个值。
  7. function add(num1,num2){
  8. alert(arguments.callee);//弹出函数本身
  9. return num1+num2;
  10. }
  11. add();

阶乘

  1. function jiecheng(num){
  2. if (num<=1) {return 1}
  3. return num*arguments.callee(num-1);
  4. }
  5. console.log(jiecheng(5));//120 5*4*3*2*1
  6. console.log(jiecheng(4));//24 4*3*2*1
  7. //use strict 严格模式下 无法使用arguments
  8. var jiecheng = function fn(num){
  9. if (num<=1) {return 1}
  10. return num*fn(num-1);
  11. }
  12. console.log(jiecheng(5));//120
  13. console.log(jiecheng(4));//24

什么可以作为参数

  1. //什么都没有
  2. function fn(){
  3. }
  4. //数字
  5. function add(num1,num2){
  6. return num1+num2;
  7. }
  8. add(1,1);
  9. //jquery 字符串
  10. $('p')

参数的返回值

  1. 参数 — 函数的输入
  2. 返回值 — 函数的输出

return用在函数中

  1. return 使用在函数中的
  2. 1、return; 结束
  3. 2、return num sum 将值返回
  4. 3、return 一般情况下放在最后,因为return后面的代码将不再执行

continue用在循环中,表示跳出本次循环

  1. for(var i=0;i<10;i++){
  2. if (i==4) {continue;}
  3. console.log(i);
  4. }

break用在循环中,表示跳出循环

  1. for(var i=0;i<10;i++){
  2. if (i==4) {break;}
  3. console.log(i);
  4. }
  5. console.log("我跳出来了");