zoukankan      html  css  js  c++  java
  • 函数、对象

    数据类型

      基本数据类型:number、string、boolean、undefined、null

      引用数据类型:Array、Function、Object

    类型转换

      转换为true:非空字符串、非0数字、任何对象

      转换为false:空字符、0、false、null、undefined

    堆和栈

      栈区:存储基本数据类型和引用数据类型的地址

      堆区:存储引用数据类型的数据

    1. 函数

      封装性、将执行代码封装在一个独立的执行环境中。可以反复调用,减少代码冗余

      函数体内提供的一个伪数组。argument中存放所有实参

      1. return

        作用:终止函数的执行,将结果返回给调用者,调用者可以用变量接收返回的结果。

    function 函数名() {
         //函数体内没有return;    默认返回undefined
         //return 数据;       终止函数并返回数据
          //return;         终止函数返回undefined    
    }        
    

      2. 作用域链

      当访问一个变量时,会先从本作用域中找,若找不到则向上一级作用域中找,以此类推就形成了一个作用域链。

      3. 预解析

      程序在执行之前的一个准备过程,这个过程就是预解析。预解析要做两件事情。

    • 把变量名提升到当前执行环境的顶部
    • 把函数体提升到当前执行环境的最顶部

    2. 对象

      1. 创建方式

        ①通过new关键字调用系统提供的object构造函数;  

    var 变量名 = new Object();  
     or var 变量名 = { };    //字面量写法推荐使用,推荐使用
    

        ②自定义构造函数; 

    function stu (n, a, g){
        this.name = n;
        this.age = a;
        this.gender = g;
    }
    var stu1 = new stu('张三', 12, '男')
    

      2. 普通函数与构造偶函数区别

        命名规则区别:普通函数采用驼峰命名,构造函数采用帕斯卡命名法(首字母大写);

        调用方式:普通函数直接调用,构造函数需要通过new调用;

        目的不同:普通函数实现一些功能,构造函数专门来创建对象。

      3. 系统提供的构造函数与自定义狗杂函数区别

        系统提供的构造函数创建的对象叫内置对象

        自定义构造函数创建的对象叫做自定义对象

      4. new关键字作用

        调用构造函数创建对象

        执行过程

          ①在内存中创建一个空的对象

          ②让this指向这个空对象

          ③通过this给这个对象添加属性和方法

          ④将对象返回给调用构造函数的调用者

        object是JS中祖宗类,所有不同类型的对象,都直接或间接继承与它

        1. 对象的操作

          给对象设置属性和方法:   对象名.键名 = 值  or  对象名['键名'] = 值

          删除对象中属性和方法:   delete 对象.键名    or   delete 对象['键名']

          检测属性和方法:  对象.hasOwnProperty('键名')

          遍历对象的键值对:

    for(var key in obj){
        console.log( obj[key] );     //遍值
        console.log( key );       //遍键名
    }
    

          检测对象的类型(检测对象类型不要用typeof):对象 instanceof 构造函数

      5. 内置对象

        Math对象

          Math.abs(数字);获取一个数字的绝对值

          Math.round(数字);四舍五入

          Math.PI; π

          Math.ceil(数字);向上取整

          Math.floor(数字);向下取整

          Math.random(); 随机数 [ 0, 1 )

          Math.max(数字,数字.....);求最大数

          Math.min(数字,数字......);求最小数

        Date对象

          1. 创建Date类型对象

            var 变量 = new Date();    //创建当前时间对象

            var 变量 = new Date('2019-2-2 3:3:3');   or   var 变量 = new Date('2019/2/2 3:3:3');    //创建指定时间

            var 变量 = new Date( value );   //创建1970年开始value毫秒后的事件对象

            var data = new Date(2018, 6,6,12,12,12,12);    //

          2. 常用Data对象方法

            获取和设置年月日         

              日期对象.getFullYear()     /    日期对象.setFullYear()
              日期对象.getFullMonth()   /    日期对象.setFullMonth()
              日期对象.getDate()      /    日期对象.setDate()

            获取和设置时分秒       

              日期对象.getHours() / 日期对象.setHours()
              日期对象.getMinutes() / 日期对象.setMinutes()
              日期对象.getSeconds() / 日期对象.setHours()

            获取星期天数

              日期对象.getDay();   // 0-6(周日0到周六6)

            获取1970年至今的总毫秒数

              日期对象.getTime()  /  日期对象.setTime(数字);

        Array对象

          向数组前后中添加元素

            arr.unshift( ele1, ele2.....);     //向数组开头添加,并返回新的长度

            arr.push(ele, ele2......);   //向数组结尾添加

          从数组前后删除元素

            arr.shift();    // 删除并返回数组第一个元素

            arr.pop();    // 删除并返回数组最后一个元素

          数组任意位置添加,删除

            arr.splice(index,how,item1,item2...);   //index从哪个位置开始删除;how删几个

          数组元素的查询

            arr.indexOf();    //返回找到元素第一个索引,不存在返回  -1

          数组元素的拼接

            arr.join();把数组元素放入一个字符串 

    var arr = [1,2,3]
    arr.join('=')
    //输出便是‘1=2=3’

          数组的反转和排序

            arr.reverse();   //颠倒数组元素顺序

            arr.sort();     //默认排序是根据字符串Unicode吗  

    arr.sort(function(a, b){      //升序
        return a-b
    })
    arr.sort(function(a, b){      //降序
        return b-a
    }) 

        扩展方法

    //数组遍历
    arr.forEach(function(value, index){
       console.log(value) 
    })
    //过滤符合条件的元素,返回一个新数组
     arr.filter(function(value,index){
       return value > 50     
    })
    //验证数组每一个元素是否符合指定条件,返回布尔
    arr.every(function(value, index){
       return 条件     
    })
    //验证数组中元素是否有符合指定条件的返回布尔
    arr.some(function(value, index){
        return 条件
    })
    //遍历数组中每一个元素,更改后存入一个新数组,并返回新数组
    arr.map(function(value, index){
       return value*2 
    })
    

       string对象

          字符串不可变性:var str = ‘abc’;str = ‘hellow’;从新给var赋值数据‘abc’不会被修改依然在内存中,重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变性

          字符串所有的方法,都不会修改字符串本身,操作完成后会返回一个新的字符串

          获取字符串的单个字符

            str.charAt(index)    or    str[ index ]

          字符串的拼接和截取

            str.concat(art1,art2...)  or   str1  +  str2

            str.slice(star, end)     //截取

          去除空白符

            str.trim();   //去除两边空白符

          字符大小写转换

            str.toUpperCase();    //转换大写

            str.toLowerCase();   //转换小写

          字符串替换

            str.replace(old, new)

          字符串分隔

            str.split();   //把一个字符串分隔成数组

        

  • 相关阅读:
    HDU Problem 1811 Rank of Tetris【拓扑排序+并查集】
    POJ Problem 2367 Genealogical tree【拓扑排序】
    HDU Problem 2647 Reward【拓扑排序】
    HDU Problem 1285 确定比赛名次【拓扑排序】
    HDU Problem HDU Today 【最短路】
    HDU Problem 3665 Seaside【最短路】
    HDU Problem 一个人的旅行 【最短路dijkstra】
    HDU Problem 1596 find the safest road【最短路dijkstra】
    Beyond Compare文本合并进行内容替换要注意什么
    用这些工具都可以比较代码的差异
  • 原文地址:https://www.cnblogs.com/xhrr/p/11169272.html
Copyright © 2011-2022 走看看