IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> call apply bind -高级JS -> 正文阅读

[JavaScript知识库]call apply bind -高级JS

call 方法

使用一直指定的this值 和单独给出一个或多个参数来调用一个函数

 		function fn(a, b) {
            console.log(this);
            console.log(a, b);
            return a+b
        }
        fn(20, 30)
        fn.call({name: 'zs'}, 20, 30)

打印结果
第一次this的值 是 window 第二次是 {name: ‘zs’}

window
20 30
{name: "zs"}
20 30

借用构造函数实现继承
在子类的构造函数里面将父类的 this 改为子类的 this实现继承

 		function  Father (name, age) {
            this.name = name
            this.age = age
        }

        function Son (name, age, like) {
            Father.call(this, name, age)
            this.like = like

        }

        let p = new Son('zs', 18, '乒乓球')
        console.log(p);

判断数据类型

Object.prototype.toString.call()

借用call方法 实现伪数组借用数组的方法

   let lis = document.getElementsByTagName("li")
   // lis 是一个伪数组
   Array.prototype.forEach.call(lis, (e, i)=> {
       console.log(e, i);
   })



apply 方法

修改this
调用函数

求最大值

 	let  max = [1,2,3,4,5,600]
    let numMax = Math.max.apply(null, max)
    console.log(numMax);
    
	let  max = [1,2,3,4,5,600]
    let numMax = Math.max(1,2,3,4,100)
    console.log(numMax);

	let  max = [1,2,3,4,5,600]
    let numMax = Math.max(...max )
    console.log(numMax);

改变this的值

	function fn(a, b) {
           console.log(this);
           console.log(a, b);
           return a+b
    }
    fn(20, 30)
    fn.apply({name: 'zs'}, [20, 30])

借用构造函数实现继承

	function  Father (name, age) {
        this.name = name
        this.age = age
    }

    function Son (name, age, like) {
         Father.apply(this, arguments )
         this.like = like

     }

    let p = new Son('zs', 18, '乒乓球')
     console.log(p);

这个代码有必要看下

这个文章可以看下
JavaScript在方法中使用apply(this,arguments)

var A={
    name:"我是小A",
    fun:function(sex,age){
        console.log("大家好! "+this.name+" 我是个"+sex+" 今年"+age+"岁")
    }
}

var B = {
    name:"我是小B"
};
var monies = ["男生",20];
A.fun.apply(B, monies); 

打印结果: 大家好! 我是小B 我是个男生 今年20/**
A.fun.apply(B, monies);  之后
var A= {
    name:"我是小A",
    fun:function(sex,age){
        console.log("大家好! "+this.name+" 我是个"+sex+" 今年"+age+"岁")
    }
}
 上面代码全等于下面代码
 var A= {
    name:"我是小A",
    fun:function(sex,age){
    this = {name: "我是小B"}
        console.log("大家好! "+this.name+" 我是个"+sex+" 今年"+age+"岁")
    }
}
*/




bind 方法

修改this
创建一个新的函数,不会自动调用的

下面是一个面试题

     const obj = {
          x: 42,
          getX: function() {
              return this.x
          }
      }

      console.log(obj.getX()); // 42

      let fn  = obj.getX
      // fn = function() { return this.x }
      console.log(fn()); // undefined

      const callFn = fn.bind(obj)
      console.log(callFn()); // 42
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 10:58:50  更:2022-05-06 11:00:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:07:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码