精华内容
下载资源
问答
  • JS中的call()方法和apply()方法用法总结

    万次阅读 多人点赞 2017-04-27 15:14:48
    JacvaScript中的call()方法和apply()方法, 1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。 2. 相同点:这两个方法的作用是一样的。都是在特定的作用域中调用函数,等于设置函数体内this对象的...

    最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧。

    1. 每个函数都包含两个非继承而来的方法:call()方法和apply()方法。

    2. 相同点: 这两个方法的作用是一样的。

    都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。

    一般来说,this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。

    call()方法使用示例:

    
    <script>
    
    	// 例 1
        window.color = 'red';
        document.color = 'yellow';
    
        var s1 = {color: 'blue' };
        function changeColor(){
            console.log(this.color);
        }
    
        changeColor.call();         //red (默认传递参数)
        changeColor.call(window);   //red
        changeColor.call(document); //yellow
        changeColor.call(this);     //red
        changeColor.call(s1);       //blue
    
    	// 例 2
    	var Pet = {
    	   words : '...',
    	   speak : function (say) {
    	       console.log(say + ''+ this.words)
    	   }
    	}
    	Pet.speak('Speak'); // 结果:Speak...
    	var Dog = {
    	   words:'Wang'
    	}
    	// 将this的指向改变成了Dog
    	Pet.speak.call(Dog, 'Speak'); // 结果: SpeakWang
    	
    </script>
    
    

    apply()方法使用示例:

    
    <script>
       // 例 1
       window.number = 'one';
       document.number = 'two';
    
       var s1 = {number: 'three' };
       function changeColor(){
           console.log(this.number);
       }
    
       changeColor.apply();         // one (默认传参)
       changeColor.apply(window);   // one
       changeColor.apply(document); // two
       changeColor.apply(this);     // one
       changeColor.apply(s1);       // three
       
    	// 例 2
    	function Pet(words){
    	    this.words = words;
    	    this.speak = function () {
    	        console.log( this.words)
    	    }
    	}
    	function Dog(words){
    	    // Pet.call(this, words); // 结果: Wang
    	   Pet.apply(this, arguments);  // 结果: Wang
    	}
    	var dog = new Dog('Wang');
    	dog.speak();
    	
    </script>
    

    3. 不同点: 接收参数的方式不同。

    • apply()方法 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。

    语法:apply([thisObj [,argArray] ]);,调用一个对象的一个方法,2另一个对象替换当前对象。

    **说明:**如果argArray不是一个有效数组或不是arguments对象,那么将导致一个
    TypeError,如果没有提供argArray和thisObj任何一个参数,那么Global对象将用作thisObj。

    • call()方法 第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。

    语法:call([thisObject[,arg1 [,arg2 [,...,argn]]]]);,应用某一对象的一个方法,用另一个对象替换当前对象。

    说明: call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj。

    使用示例1:

    function add(c,d){
     	return this.a + this.b + c + d;
     }
     
     var s = {a:1, b:2 };
     console.log(add.call(s,3,4)); // 1+2+3+4 = 10
     console.log(add.apply(s,[5,6])); // 1+2+5+6 = 14 
    

    使用示例2:

    <script>
       window.firstName = "Cynthia"; 
       window.lastName = "_xie";
    
       var myObject = {firstName:'my', lastName:'Object'};
    
       function getName(){
           console.log(this.firstName + this.lastName);
       }
    
       function getMessage(sex,age){
           console.log(this.firstName + this.lastName + " 性别: " + sex + " age: " + age );
       }
    
       getName.call(window); // Cynthia_xie
       getName.call(myObject); // myObject
    
       getName.apply(window); // Cynthia_xie
       getName.apply(myObject);// myObject
    
       getMessage.call(window,"女",21); // Cynthia_xie 性别: 女 age: 21
       getMessage.apply(window,["女",21]); // Cynthia_xie 性别: 女 age: 21
    
       getMessage.call(myObject,"未知",22); // myObject 性别: 未知 age: 22
       getMessage.apply(myObject,["未知",22]); // myObject 性别: 未知 age: 22
    
    </script>
    

    (2021-3-26补充)

    手动实现apply

    Function.prototype.myCall = function (context) {
       let obj = context || window
       obj.fn = this
       let args = []
       for (let i = 1, len = arguments.length; i < len; i++) {
           args.push(arguments[i])
       }
       const result = obj.fn(...args)
       return result
    }
    
    // test
    function add(c, d) {
        return this.a + this.b + c + d;
    }
    const obj = { a: 1, b: 2 };
    console.log(add.myCall(obj, 3, 4)); // 10  
    console.log(add.myCall({ a: 3, b: 9 }, 3, 4)); // 19
    console.log(add.myCall({ a: 3, b: 9 }, { xx: 1 }, 4)); // 12[object Object]4 
    

    手动实现apply

    Function.prototype.myApply = function (object, arr) {
        let obj = object || window
        obj.fn = this
        let result
        if (!arr) {
            return obj.fn()
        }
        if (!(arr instanceof Array)) {
            throw new Error('params must be array')
        }
        result = obj.fn(...arr)
        delete obj.fn
        return result
    }
    
    // test
    console.log(add.myApply(obj)); // NaN
    console.log(add.myApply(obj, [3, 4])); // 10 
    console.log(add.myApply(obj, [1, 'abc', '2'])); // 4abc
    
    展开全文
  • python问题 Traceback (most recent call last)

    万次阅读 多人点赞 2020-05-11 20:26:32
    python运行问题Traceback (most recent call last) 出现报错 traceback(most recent call last) ...... ...... importError:No module named lxml 解决方案一般是打开cmd 执行命令pip install xxxx(缺失的包,例如...

    python运行问题Traceback (most recent call last)

    出现报错

    traceback(most recent call last) 
    ......
    ......
    importError:No module named lxml
    

    解决方案一般是打开cmd 执行命令pip install xxxx(缺失的包,例如lxml)
    当然也有例外的,具体可参考下面的问题及其解决方法。

    问题1:No module named 'requests’

    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        import requests
    ModuleNotFoundError: No module named 'requests'
    

    解决方法
    打开cmd,
    然后执行命令:pip install requests
    在这里插入图片描述

    问题2 No module named 'lxml’
    在这里插入图片描述
    解决方法:
    打开cmd,
    然后执行命令:pip install lxml
    在这里插入图片描述
    问题3 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-78: ordinal not in range(128)

    在这里插入图片描述
    解决方法:
    在python代码所在的文件头加上如下语句块

    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    

    如果加入以上代码块引入python中print函数失灵的问题,那么就将如上代码块替换为如下代码块

    import sys #这里只是一个对sys的引用,只能reload才能进行重新加载
    stdi,stdo,stde=sys.stdin,sys.stdout,sys.stderr 
    reload(sys) #通过import引用进来时,setdefaultencoding函数在被系统调用后被删除了,所以必须reload一次
    sys.stdin,sys.stdout,sys.stderr=stdi,stdo,stde 
    

    然后运行python文件即可

    问题4 No module named 'cv2’
    在这里插入图片描述
    直接输入pip install cv2命令安装时发现也会提示出错
    在这里插入图片描述
    最后利用下面的命令安装就成功了

    pip install opencv-python
    

    在这里插入图片描述
    如果还是出错的话,在重新运行一次pip install opencv-python命令

    问题5 No module named 'tqdm’
    在这里插入图片描述
    解决方法:
    执行命令:pip install tqdm
    在这里插入图片描述

    问题6 No module named 'PIL’
    在这里插入图片描述
    解决方法:
    使用命令:pip install PIL时,出现了另一个错误,查了一下,原来是因为 PIL 已经被 Pillow 所替代了
    在这里插入图片描述
    于是执行命令pip install Pillow,成功了
    在这里插入图片描述
    问题7 Syntaxerror:non-ascii character’\xe6’ in file
    在这里插入图片描述
    解决方法:
    所有出现报错的文件中的文件头部添加注释:

    # coding=utf-8
    

    或者

    # coding=utf-8
    

    问题8 No module named 'openpyxl’
    在这里插入图片描述
    解决方法:
    执行命令:pip install openpyxl
    在这里插入图片描述

    展开全文
  • java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call 据开发人员描述:起多个服务,最后服务的时候报这个错,无论最后的服务是啥,提供的报错日志 是java.sql.SQLRecoverableException:IO ...

    应用报错:

     

              java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call

     

    据开发人员描述:起多个服务,最后服务的时候报这个错,无论最后的服务是啥,提供的报错日志
    是java.sql.SQLRecoverableException:IO 错误:Got minus one from a read call

    原因:
            当应用连接数据库时,是通过连接池的机制进行连接的,数据库参数:max-session决定连接池的

    大小,而应用同样也有一个参数,这个参数表示它连接数据库连接池所占用的最少资源。

     

    例如:总共有10个应用需要连接数据库,如果每个应用连接数据库的最小连接数为10,那么10个应用总共会
    有100个连接,这样就要求数据库连接池的max-session必须大于100,否则就会报“ Got minus one from a read call”的错误。

    解决方法:

    修改max-session



     

    1. 查看processes和sessions参数

     


      SQL> show parameter processes

      NAME                                  TYPE         VALUE

      db_writer_processes                  integer     1

      gcs_server_processes                 integer     0

      job_queue_processes                  integer     10

      log_archive_max_processes            integer     2

     

     

      processes                            integer     50

     

     

     

     


      SQL> show parameter sessions

      NAME                                  TYPE         VALUE

      license_max_sessions                 integer     0

      license_sessions_warning             integer     0

      logmnr_max_persistent_sessions       integer     1

      sessions                             integer     60

     

     

      shared_server_sessions               integer

     

     

     

     


    2. 修改processes和sessions值

      SQL> alter system set processes=300 scope=spfile;

      系统已更改。

      SQL> alter system set sessions=335 scope=spfile;

      系统已更改。

    3. 修改processes和sessions值必须重启oracle服务器才能生效

      ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:

      sessions=(1.1*process+5)


     4.重启Oracle

     

      shutdown immediate;

      startup;

     

    5.再查看processes和sessions参数

      SQL> show parameter processes

      NAME                                  TYPE         VALUE

      db_writer_processes                  integer     1

      gcs_server_processes                 integer     0

      job_queue_processes                  integer     10

      log_archive_max_processes            integer    300

      processes                            integer     50

     

     


      SQL> show parameter sessions

      NAME                                  TYPE         VALUE

      license_max_sessions                 integer     0

      license_sessions_warning             integer     0

      logmnr_max_persistent_sessions       integer     1

      sessions                             integer    335

      shared_server_sessions               integer
     

     

    修改生效。

    展开全文
  • Python中的__init__()和__call__()函数

    万次阅读 多人点赞 2017-04-20 11:31:07
    __init__()和__call__()就是class很有用的两类特殊的函数。 __init__() 在Python中,__init__()函数的意义等同于类的构造器(同理,__del__()等同于类的析构函数)。因此,__init__()方法的作用是创建一个类的...

    在Python的class中有一些函数往往具有特殊的意义。__init__()__call__()就是class很有用的两类特殊的函数。

    __init__()

    在Python中,__init__()函数的意义等同于类的构造器(同理,__del__()等同于类的析构函数)。因此,__init__()方法的作用是初始化一个类的实例。

    __call__()

    Python中的函数是一级对象。这意味着Python中的函数的引用可以作为输入传递到其他的函数/方法中,并在其中被执行。
    而Python中类的实例(对象)可以被当做函数对待。也就是说,我们可以将它们作为输入传递到其他的函数/方法中并调用他们,正如我们调用一个正常的函数那样。而类中__call__()函数的意义正在于此。为了将一个类实例当做函数调用,我们需要在类中实现__call__()方法。也就是我们要在类中实现如下方法:def __call__(self, *args)。这个方法接受一定数量的变量作为输入。
    假设x是X类的一个实例。那么调用x.__call__(1,2)等同于调用x(1,2)。这个实例本身在这里相当于一个函数。

    总结

    那么,__init__()__call__()的区别如下:

    1. __init__()的作用是初始化某个类的一个实例。
    2. __call__()的作用是使实例能够像函数一样被调用,同时不影响实例本身的生命周期(__call__()不影响一个实例的构造和析构)。但是__call__()可以用来改变实例的内部成员的值。
    class X(object):
    	def __init__(self, a, b, range):
    		self.a = a
    		self.b = b
    		self.range = range
    	def __call__(self, a, b):
    		self.a = a
    		self.b = b
    		print('__call__ with ({}, {})'.format(self.a, self.b))
    	def __del__(self, a, b, range):
    		del self.a
    		del self.b
    		del self.range
    
    >>> xInstance = X(1, 2, 3)
    >>> xInstance(1,2)
    __call__ with (1, 2)
    
    展开全文
  • call指令

    千次阅读 2018-10-10 17:20:11
    call指令的作用是把call指令的下一条指令的IP压入栈
  • call symput与call symputx详解

    万次阅读 2017-09-20 23:00:00
    call symput的功能是可以在data step内将值塞到一个macro变量里面。如果这个macro变量已经存在,那这个call就会更新该macro变量的值。 用法: call symput (macro变量, text); 注:不会自动去除值前后的空格 eg.将...
  • CALL SYMPUT与CALL SYMPUTX区别

    千次阅读 2017-05-17 13:51:56
    call symput 在data步中将值塞入宏变量 http://www2.sas.com/proceedings/sugi29/052-29.pdf [SAS] CALL SYMPUT与CALL SYMPUTX CALL SYMPUT的功能是可以在DATA step内将值塞到一个macro变量里面。如果这个...
  • 游戏Call技术-绑定主线程调用CALL技术(反游戏检测call) 我们在写call调用游戏进程里call时候,经常辅助运行一段时间后,游戏就会断线或崩溃掉,但是经过检查, 发现我们调用CALL的源代码又没发现写错误,这到底是怎样呢...
  • call命令

    万次阅读 2016-11-03 09:10:10
    一、call命令总结 【1】call命令简介  学过汇编或C的朋友,肯定都知道call指令表示什么意思。其实,在这里它的意思也是一样的。在批处理脚本中,call命令用来从一个批处理脚本中调用另一个批处理脚本。  语法:...
  • 我们在写call调用游戏进程里call时候,经常外挂运行工作一段时间后,游戏就会断线或崩溃掉,但是经过检查, 发现自己调用CALL的代码又没发现写错误,这到底是怎么呢?{:100_162:} 其实这些是现在游戏的一些游戏反外挂...
  • Telephony Call

    千次阅读 2016-04-19 14:49:50
    call对象 packages/services/Telecomm/src/com/android/server/telecom/Call.java frameworks/base/telecomm/java/android/telecom/Call.java packages/apps/InCallUI/src/com/android/incallui/Call.java ...
  • E-Call:当开车如遭遇紧急情况,用户可按下该键以最高优先级接通呼叫中心,人工坐席将同时获取客户车辆的重要数据并协助驾驶员脱离危险,当遇到特殊情况,汽车气囊弹出车辆会发出消息通知Tbox拨打紧急电话。...
  • JVM系列之:JIT中的Virtual Call

    万次阅读 2020-08-03 10:36:36
    文章目录简介Virtual Call和它的本质Virtual Call和classic callVirtual Call优化单实现方法的例子Virtual Call优化多实现方法的例子总结 简介 什么是Virtual Call?Virtual Call在java中的实现是怎么样的?Virtual ...
  • call by value 和 call by reference

    万次阅读 2016-05-27 13:07:49
    call by value 不会改变实际参数的数值  B. call by reference 能改变实际参数的参考地址  C. call by reference不能改变实际参数的参考地址  D. call by reference 能改变实际参数的内容  答案:ACD
  • Call by value Call by pointer Call by reference

    千次阅读 2012-08-07 19:42:58
    在C語言裡裡,傳遞參數的2種方式,分別是Call by value、Call by pointer。而在C++裡多了一個Call by reference的方法。 Call by value 參數以數值方式傳遞,複製一個副本給另一個
  • Using example among PyObject_CallObject, PyObject_Call, PyObject_CallFunction
  • 一、学习this的指向问题 二、call和apply的特点与区别 三、模拟实现一个call 四、bind的功能 五、结尾 思考题+导图+示例代码,让你轻松掌握!
  • 超级详细找CALLCALL教程[转]

    千次阅读 2019-07-05 01:51:02
    首先我们要知道一点,为什么要找CALLCALL是什么?大家知道易里的子程序吧如何调用子程序的?这里的CALL就是调用子程序的意思,那问了为什么要找他的,答案是:当你些个游戏的外挂用模拟键盘操作的时候,被操作的...
  • 在使用tensorflow低阶API实现线性回归时,模型如下定义: ```python class Model(object): def __init__(self): self.w = tf.random.uniform([1]) ...需要将`__call__`修改为`call` 这两者区别是什么?
  • 汇编语言--call 指令

    万次阅读 2020-09-11 23:40:34
    call指令经常跟ret指令配合使用,因此CPU执行call指令,进行两步操作: 将当前的 IP 或 CS和IP 压入栈中; 转移(jmp)。 call指令不能实现短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同。 ...
  • android call: call not sent

    千次阅读 2013-12-16 22:11:26
    都说打call就一句话的事,很简单。我却经常简单地方阴沟里翻船。 用下面的方法打 call,最后call not sent: 哪位大虾给解答一下??? //method to make call private void makeCall(String num){  if ((num!=...
  • Lombok 的 @EqualsAndHashCode(callSuper = false) 的使用

    万次阅读 多人点赞 2019-05-10 13:56:01
    但是,这个参数,callsuper = false 有问题吗? 你在使用这个注解的时候,确定知道“为什么要重写hashcode和equals方法吗?” 先看下面的测试。 两个model的代码我就截图啦:父类 TV.java 和 子类 小米TV.java,...
  • JS中的call()和apply()方法和区别

    万次阅读 多人点赞 2018-09-03 19:34:59
    call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。 上面的定义看一遍是很懵的,不过自己遍写例子遍反复读的时候,会有种拨开云雾的感觉。 call 与...
  • Unity DrawCall详解

    万次阅读 2019-01-03 11:23:44
    在实际项目开发中,提起unity优化,肯定是有DrawCall的相关内容的,下面就讲解一下什么是DrawCall以及如何对DrawCall进行优化操作。 一、什么是DrawCall?  在unity中,每次CPU准备数据并通知GPU的过程就称之为一...
  • call apply bind

    千次阅读 2018-11-12 10:12:37
    JavaScript的call,apply和bind的区别 相同点是三者都可以把一个函数应用到其他对象上;都是用来改变函数的this对象的指向的;第一个参数都是this要指向的对象;都可以利用后续参数传参。不同点是call,apply是修改...
  • Telephony MO CALL/IMS CALL

    千次阅读 2016-04-06 07:40:32
    本篇文章介绍Telephony的MO(Mobile Original) call 的流程。 1.拨号App中输入号码并拨号,Android的源生的拨号App为Dialer(packages/apps/Dialer) 下面看一下在输入完号码,点击拨号按钮后,Dialer中都做了什么...
  • Emergency Call 分析

    千次阅读 2016-08-19 10:26:36
    EmergencyCall
  • Vue之call

    千次阅读 2019-08-20 17:18:45
    call 是js语法。。。今天遇到了,就写几个demo ,了解一下他的原理。 var test = { add:function (a) { return a+1 } } var addfun = test.add console.log(addfun.call(test,1)) console.log(test.add(5)) ...
  • Makefile的call函数

    千次阅读 2018-11-04 11:57:33
    define target echo $0 ... $(call target,hello, world) clean: $(call target,clean) .PHONY: all clean 执行make 或者make all 执行的结果是: echo target target echo hello hel...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494,399
精华内容 197,759
关键字:

call