2024-11-28 日报 Day19

2024-11-28 日报 Day19

Yuyang 前端小白🥬

今日的鸡汤

记住,能打败自己的永远只有下一秒的自己。

今日学习内容

1、JS红皮书P56-59 第三章:语言基础

今日笔记

1、Object类型:ECMAScript 中的对象其实就是一组数据和功能的集合。对象通过 new 操作符后跟对象类型的名称来创建。开发者可以通过创建 Object 类型的实例来创建自己的对象,然后再给对象添加属性和方法:

1
2
let o = new Object();
let o = new Object; // 合法,但不推荐

2、Object 的每个实例都具有下列属性和方法:

  • constructor:保存着用于创建当前对象的函数。对于前面的例子,这个属性的值就是 Object()。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必題是字符串(如 o.hasOwnProperty(‘name’))。
  • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句来枚举。与 hasOwnProperty() 方法一样,作为参数的属性名必題是字符串。
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString() 方法的返回值相同。
    3、操作符:数学操作符、位操作符、关系操作符、相等操作符。ECMAScript 中的操作符是独特的,因为它们可用于各种值,包括字符串、数值、布尔值,甚至还有对象。在应用给对象时,操作符通常会调用 valueOf()和/或 toString()方法来取得可以计算的值。
    4、一元操作符之递增/递减操作符:前缀和后缀递增/递减操作符。前缀递增/递减操作符会在语句被求值之前改变变量的值,而后缀递增/递减操作符则是在包含它们的语句被求值之后再改变变量的值。以下例子展示了这两种操作符的区别:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    let age = 29;
    let anotherAge = --age + 2;
    console.log(age); // 28
    console.log(anotherAge); // 30

    let num1 = 2;
    let num2 = 20;
    let num3 = --num1 + num2;
    let num4 = num1 + num2;
    console.log(num3); // 21
    console.log(num4); // 21

    let num1 = 2;
    let num2 = 20;
    let num3 = num1-- + num2;
    let num4 = num1 + num2;
    console.log(num3); // 22
    console.log(num4); // 21
    这 4 个操作符可以作用于任何值,意思是不限于整数——字符串、布尔值、浮点值,甚至对象都可以。递增和递减操作符遵循如下规则。
     对于字符串,如果是有效的数值形式,则转换为数值再应用改变。变量类型从字符串变成数值。
     对于字符串,如果不是有效的数值形式,则将变量的值设置为 NaN 。变量类型从字符串变成数值。
     对于布尔值,如果是 false,则转换为 0 再应用改变。变量类型从布尔值变成数值。
     对于布尔值,如果是 true,则转换为 1 再应用改变。变量类型从布尔值变成数值。
     对于浮点值,加 1 或减 1。
     如果是对象,则调用其(第 5 章会详细介绍的)valueOf()方法取得可以操作的值。对得到的值应用上述规则。如果是 NaN,则调用 toString()并再次应用其他规则。变量类型从对象变成数值。
    下面的例子演示了这些规则:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    let s1 = "2"; 
    let s2 = "z";
    let b = false;
    let f = 1.1;
    let o = {
    valueOf() {
    return -1;
    }
    };
    s1++; // 值变成数值 3
    s2++; // 值变成 NaN
    b++; // 值变成数值 1
    f--; // 值变成 0.10000000000000009(因为浮点数不精确)
    o--; // 值变成-2
    5、一元操作符之加和减: 一元加和减操作符对大多数开发者来说并不陌生,它们在 ECMAScript 中跟在高中数学中的用途一样。一元加由一个加号(+)表示,放在变量前头,对数值没有任何影响:
    let num = 25;
    num = +num;
    console.log(num); // 25
    如果将一元加应用到非数值,则会执行与使用 Number()转型函数一样的类型转换:布尔值 false和 true 转换为 0 和 1,字符串根据特殊规则进行解析,对象会调用它们的 valueOf()和/或 toString()方法以得到可以转换的值。
    下面的例子演示了一元加在应用到不同数据类型时的行为:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    let s1 = "01"; 
    let s2 = "1.1";
    let s3 = "z";
    let b = false;
    let f = 1.1;
    let o = {
    valueOf() {
    return -1;
    }
    };
    s1 = +s1; // 值变成数值 1
    s2 = +s2; // 值变成数值 1.1
    s3 = +s3; // 值变成 NaN
    b = +b; // 值变成数值 0
    f = +f; // 不变,还是 1.1
    o = +o; // 值变成数值-1
此页目录
2024-11-28 日报 Day19