函数 + 基本包装类 + global + Math对象 -- 暑期day1

函数(Function)

函数名实际上是一个指向函数对象的指针

不带圆括号的函数名是访问函数指针,而不是调用函数

当在网页的全局作用域中调用函数的时候,this对象引用的就是window

函数里面的name属性表示函数希望接受的命名参数的个数

bind()方法

创建函数的实例并将函数的this传入

    window.color = 'red';
    var obj = {
    
    
        color : 'blue'
    }
    function test() {
    
    
        console.log(this.color);
    }
    var newTest = test.bind(obj);
    newTest();//blue

基本包装类

number,Boolean,string三种基本包装类

把字符串传给Object构造函数,就会创建String的实例;传入数值会得到Number的实例;传入布尔值会得到Boolean的实例

string类型

字符串可以用双引号,单引号和反引号包含,前两个效果基本一样,反引号允许我们通过${…}将任何表达式嵌入到字符串里面

    function sum(a, b) {
    
    
        return a + b;
    }

    console.log(` 1 + 2 = ${
      
      sum (1 , 2)}`);//1 + 2 = 3
    console.log(str.charAt(1));//返回字符
    console.log(str.charCodeAt(1));//返回字符编码
    console.log(str[1]);//效果和第一个一样

用反引号还可以让字符串换行,另外两种方法会报错

    let str = `abc
    sdk`;

字符串中slice(),substr(),substring()不同
这三种方法都不会影响原字符串,返回字符串
第一个参数都是表示起始位置,如果没有第二个参数的话,三个都会将剩下的全部返回
对于slice和substring的第二个参数表示的是返回到哪个位置,对于substr第二个参数则是返回多少个字符
如果第二个参数是负值,substr会把第二个参数转换为0,返回一个空字符串。对于substring来说,也会将第二个转换为0,但在这个里面会将最小值作为起始值,最大值作为终点值,slice就是字符串长度加负值,然后得出的数作为终点指,如果这个值也是负的,那就返回空字符串

  • trim()方法
    创建字符副本,删除前置和后置的所有空格,Chrome还支持trimLeft() 和 trimRight()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3PHHM6n6-1626014538334)(1.png)]
toLocaleLowerCase()和toLocaleUpperCase()是按照本地方式把字符串转换为大小写。只有几种语言(如土耳其语)具有地方特有的大小写映射,所有该方法的返回值通常与 toUpperCase() 和 toLowerCase() 一样。

  • replace()方法
    是将第二个参数代替第一个参数,第一个参数可以是字符串或者RegExp对象
    let test = 'cat, bat, sat, fat';

    console.log(test.replace('at', 'ond'));//cond, bat, sat, fat
    console.log(test.replace(/at/g, 'ond'));//cond, bond, sond, fond
    //第二个替换全部
  • localeCompare()方法
    传入字符串参数大于原字符串,返回1(大多情况是1,也有可能比1大)
    如果小于返回-1(大多情况是-1,也有可能是其他负数)
    如果一样,返回0

  • fromCharCode()方法
    将一或多个字符编码装换为一个字符串,是charCodeAt()方法的逆

Global对象

所有在全局作用域中定义的属性和函数,都是Global对象的属性

URI编码方法

  • encodeURI()方法,对URI进行编码,不会对本身属于URI的特殊字符进行编码,例如冒号,正斜杠,问号,井字号
    实际上只转换了空格
  • encodeURIComponent()方法,会对发现的所有任何非标准字符进行编码
  • decodeURI()方法,对encodeURI()进行解码
  • decodeURIComponent()方法,对encodeURIComponent()进行解码
    let uri = 'https://mp.csdn.net/mp_blog/manage/article?spm=1011.2124.3001.5298';

    console.log(encodeURI(uri));
    console.log(encodeURIComponent(uri));
        
    let uri1 = 'https%3A%2F%2Fmp.csdn.net%2Fmp_blog%2Fmanage%2Farticle%3Fspm%3D1011.2124.3001.5298';

    console.log(decodeURI(uri1));
    console.log(decodeURIComponent(uri1));

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxuGxJFD-1626014538336)(2.png)]

eval()方法

    let test = 'abc';

    console.log(test);
    eval('console.log(test);');
    // 上述两种效果一样

最后一行代码在解析的时候实际上和倒数第二行代码一样

通过eval()执行的代码被认为是包含该次调用的执行环境的一部分,因此被执行的代码具有与该执行环境相同的作用域链

在eval()中创建的任何变量和函数都不会被提升,因此在解析代码的时候,他们被包含在一个字符串中,他们只在eval()执行的时候创建

Math对象

  1. min(),max()方法,求最小值或最大值
    如果想要传入一串数组,就必须先用apply改变this指向
    let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

    console.log(Math.max(arr));//NaN
    console.log(Math.max.apply(Math, arr));//9
    console.log(Math.max(...arr));//9
  1. 舍入方法
    ceil()向上舍入
    round()四舍五入
    floor()向下舍入

  2. random()方法
    该方法返回一个大于等于0小于1的随机数

// 返回一个整数区间的随机数
    function randomNum(lowerValue, upperValue) {
    
    
        let numLength = upperValue - lowerValue + 1;
        return Math.floor(Math.random() * numLength + lowerValue); 
    }
    console.log(randomNum(1, 10));

猜你喜欢

转载自blog.csdn.net/weixin_50948265/article/details/118661564
今日推荐