call()和apply()

news/2024/7/11 0:36:42 标签: es6

总结下:

  • call()和apply()都是函数对象的方法,需要通过函数对象来调用,对象调用call和apply时,会调用函数执行;此时this是window;
        function fun() {
            //alert('我是fun函数')
            console.log(this);
        }
        fun.call()
        fun.apply()
        fun() //window
  • 也可以将对象指定对括号内的参数,此时this是调用方法的对象;
        var obj = {}
        fun.call(obj) //obj
        fun.apply(obj)
        fun(obj)
  • 当以构造函数调用时,this是新创建的对象
   var obj1 = {
            name: "obj1",
            sayName: function() {
                alert(this.name)
            }
        }

        var obj2 = {
                name: "obj2"
            }
            //fun() //this指向window
            //fun.apply(obj1); //修改函数执行时的this
            //console.log(fun);
        obj1.sayName.apply(obj2) //obj2

  • call方法可将实参在对象后依次传递;
  • apply则需要将实参封装到一个数组中统一传递;
        function fun1(a, b) {
            console.log("a=" + a);
            console.log("b=" + b);
        }
        fun1() //a=undefined b=undefined
        fun1.call(obj1, 2, 3) //a=2 b=3
        fun1.apply(obj1, [2, 3]) //a=2 b=3

http://www.niftyadmin.cn/n/1263309.html

相关文章

module ‘cv2.cv2‘ has no attribute ‘HAAR_SCALE_IMAGE‘,

报错:module ‘cv2.cv2’ has no attribute ‘HAAR_SCALE_IMAGE’,子模块cv已从opencv 3.0中移除。 解决方法:改为cv2.CASCADE_SCALE_IMAGE,亲测有效!

FETCH (Transact-SQL)

SQL Server 2005 联机丛书(2007 年 9 月)FETCH (Transact-SQL)通过 Transact-SQL 服务器游标检索特定行。 语法 FETCH[ [ NEXT | PRIOR | FIRST | LAST| ABSOLUTE { n | nvar }| RELATIVE { n | nvar }]FROM] { { [ GLOBAL ] cursor_name } | cursor_var…

http相关内容

1、HTTP请求交互的基本过程: -前后应用从浏览器向服务器发送HTTP请求(请求报文);后台服务器接收到请求后,调度服务器处理请求,向浏览器返回HTTP响应;浏览器接收到响应,解析显示响应…

参加第二届D2前端技术论坛的感受

先放张图片吧,呵呵,只放照到我的那张。 右边穿绿衣服的就是我了。^0^这次大会印象最深的是满口英文的那位YUI工程师--叫什么我记不清了,和silverlight应用。前者让我更加知道做我们这行,一定要过语言关,回家加紧练习吧…

密码库LibTomcrypt的内容介绍及分析

密码库LibTomcrypt的内容介绍及分析 2.1 密码知识简介 2.1.1专业术语 发送者和接收者 假设发送者想发送消息给接收者,且想安全地发送信息:她想确信偷听者不能阅读发送的消息。 2.1.2消息和加密 消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称…

为什么需要模块化

下面主要是看了王元红老师关于vue的视频讲解,归纳出的一些知识点,不太正式,如有问题,请给予指正。 为什么出现了模块化,首先要讲下javascript的发展: 一 、网页开发的早期,js制作作为一种脚本…

字节跳动实习一面

自我介绍说一下对flex布局的理解css盒子模型js中var、let、const的区别,作用域问题(这里理解不太深刻,面试官出题说结果,出了点问题)this指向问题,apply、call、bindmap和reducetcp和udp的区别(…

实现居中效果(水到忍不住吐槽自己--)

实现水平居中的方法: 居中元素方法块级盒子先给定宽度,给其增加margin:0 auto属性行内元素给定 text-align:center属性任何元素如果想用flex布局,可以给父级盒子给一个flex属性,然后,给定其 justify-content:center属…