zoukankan      html  css  js  c++  java
  • Day5

    Day5


     

    1-js 组成?

    2-js 中有哪些数据类型?

    3-typeof 和 instanceof 的区别

    4-怎么判断两个对象想到等

    5-js 中函数有哪些定义方式?

    6-js 中函数有哪些调用形式?

     

    1-js 组成?

    bom

    dom

    JavaScriptECMA

    2-js 中有哪些数据类型?

    string

    array

    string

    number

    object

    boolean

    3-typeof 和 instanceof 的区别

    都是数据类型查看

    typeof 简单的数组,查询 使用

    typeof (查找的数据)    返回数据类型 分别为stringBooleannumberfunctionobjectundefined

    obj1 instanceof 数据类型 //obj1 instanceof obj2   相等返回值为true;否则返回false。

    4-怎么判断两个对象想到等

    ES6有一个方法来判断两个对象是否相等

    console.log(Object.is(a,b))

    这个方法判断的是a和b是不是同一个指针的对象

     1.用Object.getOwnPropertyNames拿到对象的所以键名数组

    2.比对键名数组的长度是否相等。否=>false。真=>3
    3.比对键名对应的键值是否相等

    因为对象键值对可能已键值对形式存在,判断一下,递归调用j接着判断,键值对

    function isObjectValueEqual(a, b) {
         var aProps = Object.getOwnPropertyNames(a);
         var bProps = Object.getOwnPropertyNames(b);
          if (aProps.length != bProps.length) {
               return false;
          }
          for (var i = 0; i < aProps.length; i++) {
            var propName = aProps[i]
    
            var propA = a[propName]
            var propB = b[propName]
           // 2020-11-18更新,这里忽略了值为undefined的情况
          // 故先判断两边都有相同键名
           if(!b.hasOwnProperty(propName)) return false
            if ((typeof (propA) === 'object')) {
              if (this.isObjectValueEqual(propA, propB)) {
                  // return true     这里不能return ,后面的对象还没判断
                } else {
                  return false
                }
            } else if (propA !== propB) {
              return false
            } else { }
          }
        return true
        }
        var a = {
            id:1,
            name:2,
            c:{
                age:3
            }
        };
        var b = {
            id:1,
            name:2,
            c:{
                age:3
            }
        }
        console.log(isObjectValueEqual(a,b));//true

    5-js 中函数有哪些定义方式?

    JavaScript 函数是通过 function 关键词定义的。

    您可以使用函数声明或函数表达式。

    函数声明

    function functionName(parameters) {
       要执行的代码
    }
    

    被声明的函数不会直接执行。它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。

    函数表达式

    JavaScript 函数也可以使用表达式来定义。

    函数表达式可以在变量中存储:

    实例

    var x = function (a, b) {return a * b};


    系统对象也构建函数

     1-定义

    var scope = "global";
    function f() {
         var scope; //在函数顶部声明了局部变量,即声明提前

    console.log(scope); //变量存在,输出“undefined”,而不是“global”

    var scope = "local"; //变量在这里赋初始值

    console.log(scope); //输出“local”

    }

    f();

    (function () {
        var x = "Hello!!";      //我会调用我自己
    })();

    3-剪头函数

    箭头函数没有自己的 this。它们不适合定义对象方法。

    箭头函数未被提升。它们必须在使用前进行定义。

    使用 const 比使用 var 更安全,因为函数表达式始终是常量值。

    如果函数是单个语句,则只能省略 return 关键字和大括号。因此,保留它们可能是一个好习惯:

    实例

    const x = (x, y) => { return x * y };
     

    6-js 中函数有哪些调用形式?

    以函数形式调用函数

    实例

    function myFunction(a, b) {
        return a * b;
    }
    myFunction(10, 2);   

    以上函数不属于任何对象。但是在 JavaScript 中,始终存在一种默认的全局对象。

    在 HTML 中,默认全局对象是 HTML 页面本身,所有上面的函数“属于”HTML 页面。

    在浏览器中,这个页面对象就是浏览器窗口。上面的函数自动成为一个窗口函数。

    myFunction() 和 window.myFunction() 是同一个函数:

    作为方法来调用函数

    在 JavaScript 中,您可以把函数定义为对象方法。

    下面的例子创建了一个对象(myObject),带有两个属性(firstName 和 lastName),以及一个方法(fullName):

    实例

    var myObject = {
        firstName:"Bill",
        lastName: "Gates",
        fullName: function () {
            return this.firstName + " " + this.lastName;
        }
    }
    myObject.fullName();         // 将返回 "Bill Gates"

    通过函数构造器来调用函数

    如果函数调用的前面是 new 关键字,那么这是一个构造函数调用。

    它看起来像你创建一个新的函数,但由于 JavaScript 函数是对象,你实际上创建一个新对象:

    实例

    // 这是函数构造器:
    function myFunction(arg1, arg2) {
        this.firstName = arg1;
        this.lastName  = arg2;
    }
    
    // 创建了一个新对象:
    var x = new myFunction("Bill", "Gates");
    x.firstName;                             // 会返回 "Bill"
     

    this 关键词

    在 JavaScript 中,被称为 this 的事物,指的是“拥有”当前代码的对象。

    this 的值,在函数中使用时,是“拥有”该函数的对象。

    请注意 this 并不是变量。它属于关键词。您无法改变 this 的值。





  • 相关阅读:
    Appium:四:控件
    Appium:三:APP元素定位
    jmeter分布式踩得坑汇总
    Linux环境下进行分布式压测踩过的坑
    记录一次余额迁移的坑(测试角度)
    记录性能测试脚本开发的过程
    jmeter如何设置全局变量
    性能测试,如何得到大量token,并保存在本地文件中
    小程序测试心得
    测试管理三
  • 原文地址:https://www.cnblogs.com/wy252/p/14337241.html
Copyright © 2011-2022 走看看