• 前端开发JS——引用类型


    10、流程控制语句
         注:var obj = {};这里的obj转换boolean语句为true
      if语句和java是一样的,判断条件也是根据上篇博客提到的假性值
    // 弹出一个带输入框的窗口
    var value = prompt("请输入。。。");    //输入1
    if(value=="1"){
        alert("true");    //弹框
        var inner = 1;
    }
    else{
        alert("flase");
        var inner = 2;
    }
    // 打印输出流程语句的变量
    console.log(inner);   //1
         switch条件需要和case匹配值和类型都要相同,另外switch的判断条件可以是String 、Number、Boolean、char、枚举、null、undefined
    var value = prompt("请输入。。。");    //输入1
    // value的值这里是字符串1,他不能和数字1匹配
    // value的值和类型与case后的值和类型必须相等,才能匹配
    value = +value;    //转换数值类型
    switch(value){
        case 1: console.log("yi"); break;
        //case的值类型可以为函数
        case (function(){return 2;})(): console.log("er"); break;   
        case 3: console.log("san"); break;
        case 4: console.log("si"); break;
        default: alert("没有匹配值")
    }
         for循环、while循环、do···while循环和Java的一模一样,但是js里面的变量外部也可以使用。
      for···in循环对象:
    obj = {
        "name": "xiaohu",
        "age":20,
        "gender": "male",
        a: "sa"
    }
    console.log(obj.name);  //xiaohu
    console.log(obj.a);   //sa
    for(key in obj){
        console.log(key+"------"+obj[key]); //name------xiaohu,依次输出
    }

    11、小技巧:
         ①var d = new Date().getDate(); ----->d是一个number类型,Sunday=0, Monday=1, Tuesday=2,······
     
    12、创建对象:
         1)使用构造函数创建对象并赋值如:
              var obj = new Object();
              obj.name = "张三";
              obj["age"] = 21;
              obj.sayHi = function(){};
         2)使用字面量创建对象如:
              var obj = {
                  name: "张三",
                   age: 21,
                   sayHi: function(){}, 
              }
     
    13、访问对象的属性和方法:
         1)通过  对象名.属性名   来访问如:
              console.log(obj.name);     //张三
              console.log(obj.age);        //21
              console.log(obj.sayHi);    //这里并没有执行函数,若执行,在其后添加括号
         2)通过 对象名["属性名"] 来访问,也可以自动添加属性名和属性值如:
              console.log(obj["name"]); //张三
              console.log(obj["age"]);    //21
              console.log(obj["sayHi"]);  //这里并没有执行函数,若执行,在其后添加括号
              
              obj["gender"] = "男";
              console.log(obj["gender"]);    //男
         3)获取对象的属性和值如:
                   for(var key in obj){
                        //注:这里就不能使用 . 来访问了,若用点访问,则返回的结果可能是undefined或者是obj对象的key属性名对应的值。
                        console.log(key,"-----",obj[key]);     
                   }
     
    14、删除对象的属性名及它的值:
              delete obj.age; 或者 delete obj["age"];
     
    15、对象序列化和反序列化:
              序列化JSON.stringify(obj):将js对象数据转换为字符串
                   console.log(JSON.stringify(obj));
              反序列化JSON.parse(str):   将字符串转换技术对象数据
                   var str = JSON.stringify(obj);
                   console.log(JSON.parse(str));
     
    16、每一个构造函数都有一个原型对象,实例可以调用对应的构造函数中的原型对象的属性和方法
              console.log(Object.prototype);   //{}
              console.log(Object.prototype.constructor === Object);    //true
              
              var obj = {name: "张三"};
              console.log(obj.toString());    //[object Object]
              console.log(obj.toString === Object.prototype.toString);  //true
              console.log(obj.constructor);     //[Function: object]
              
              1)in 是判断是自有属性或者继承属性
              console.log('name' in obj);   //true
              console.log(toString' in obj);   //true
              console.log('aaa' in obj);  //false
     
              2)hasOwnProperty()  判断是不是自有属性 如果重写了,也算是自有属性
         console.log(obj.hasOwnProperty("name"));   //true
         console.log(obj.hasOwnProperty("aaa"));   //false
              
              3)propertyIsEnumerable() 判断是不是自有属性并且可枚举
              console.log(obj.propertyIsEnumerable("name"));      //true
              console.log(obj.propertyIsEnumerable("toString "));      //false
     
     
    4)isPrototypeOf()判断 Object.prototype是不是obj的原型对象
              console.log(Object.prototype.isPrototypeOf(obj));    //true
     
    17、函数:
              1)函数声明:
                   ----> function 函数名(){
                                  函数体
                                  return;    //没有return返回值,默认是undefined
                             }
                
                   -----> var 函数名 = function (){
                                  函数体
                                  return;
                             }
     
    它们的功能和Java的很相似
    第二种是一个匿名函数(英文简称 IIFE)是一种立即执行的函数
    匿名函数的使用如:
         function(){
              console.log("匿名函数");
         }
    执行这个函数的时候就在大括号后面添加()
     
    2)函数声明提升和变量名声明提升如:
    console.log(one);   //undefined
    function one(){
         console.log("打印函数");
    }
    var one = 123;
    console.log(one);    //123
    这种情况是变量声明在前,函数声明在后,函数声明再覆盖,最后变量再赋值
     
     
    18、arguments 里存放实参列表,类数组对象,length属性代表存放实参个数,callee属性代表函数
    function add(){
         var total = 0;
         for(var i = 0; i < arguments.length; i++){   //argument = {0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7}
             total += arguments[i]; 
         }
         return total;
    }
    var result = add(1,2,3,4,5,6,7);
    console.log(result);     //28
     
    function test(num){
         console.log(arguments.callee);   //[Function: test]
         if(num == 1)
              return 1;
                   else
                        return num*arguments.callee(num-1);   //argument的callee属性指向的是当前函数名,可用于递归,防止函数名重新赋值
    }
    console.log(test(5));   //120
     
    19、this指向当前函数的作用域( 指向的是函数赖以执行的环境对象)
    function test(){
    console.log(this);   //返回 globa l对象
    }
    在nodeJS环境中返回的是global对象,
    在浏览器环境中返回的是window对象
     
    test();
    var obj = {
      name:'zhangsan',
      age: 21,
      gender: 'male',
      sayHi: function(){
        console.log(this);      //就会返回{name:'zhangsan', age:21, gender: 'male', sayHi: [Function],}         
      }
    }
    obj.sayHi();
     
     function createObj(naem, age, gender){
      this.name = name;
      this.age = age;
      this.gender = gender;
    }
    var obj = new createObj("zhangsan", 22, "nan")
    console.log(obj);    //返回的是一个对象
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    练习4.22、4.23、4.24
    练习4.20
    练习4.17、4.18、4.19
    mysql基础语句
    mysql的innodb存储引擎
    git
    mysql集群7.4.1
    批量执行命令
    cnetos 7 mariadb 集群报错分析解答
    windows_agent 添加
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/11534179.html
Copyright © 2020-2023  润新知