Function.prototype.call.apply结合用法】的更多相关文章

 昨天在网上看到一个很有意思的js面试题,就跟同事讨论了下,发现刚开始很绕最后豁然开朗,明白过来之后发现还是挺简单的,跟大家分享下!  题目如下: var a = Function.prototype.call.apply(function(a){return a;}, [0,4,3]); alert(a); 分析步骤如下: 1.将Function.prototype.call当成整体,call方法是由浏览器实现的本地方法,是函数类型的内部方法 var a = (Function.prototy…
在看uncurrying化函数时候,碰到了Function.prototype.call.apply()的用法: 先说说uncurrying()函数: Function.prototype.uncurrying = function(){ var self = this; return function(){ var obj = Array.prototype.shift.call(arguments); return self.apply(obj,arguments); } } 然后可以通过v…
关于call()和apply()基本用法可以参阅如下两篇文章: (1).call方法参阅JavaScript call()一章节. (2).apply方法参阅JavaScript apply()一章节. 网上看到一段用法比较奇怪的代码,代码如下: [JavaScript] Function.prototype.apply.call(Math.floor, undefined, [1.75]) 重新进行一下分组会更清晰: [JavaScript] (Function.prototype.apply…
首先需要了解apply,call的基本用法,其目的是改变调用方法中的this指向,将其指向为传入的对象,改变this的指向,两种方法接收参数的方式不同. 代码:console.log var console = window.console || {log: function () {}}; var log = console.log; console.log = function(tips,message){ Function.prototype.apply.call(log, console…
Function.prototype.apply()|Function.prototype.call() apply()方法可以在使用一个指定的 this 值和一个参数数组(或类数组对象)的前提下调用某个函数或方法.call()方法类似于apply(),不同之处仅仅是call()接受的参数是参数列表. 简而言之: apply()一个this,多个参数 call()   一个this,一个参数 语法 fun.apply(thisArg[, argsArray])|fun.call(thisArg[…
一.前言                                大家先预计一下以下四个函数调用的结果吧! var test = function(){ console.log('hello world') return 'fsjohnhuang' }test.call() // ① Function.prototype.call(test) // ② Function.prototype.call.call(test) // ③ Function.prototype.call.call(…
刚刚在一个群里看到有人问 Function.prototype.call.apply(obj, args) 如何理解,觉得挺有意思的.刚开始被惯性思维干扰了,一直都是 call 和 apply 分开用呀!!! 如果理解 [].slice.apply(obj, args) 的话,也就能理解 Function.prototype.call.apply(obj, args) 了. 由于“.”的操作顺序是从右到左,所以 (1)首先以最右边的“.”为分割点,左边的 obj1=Function.protot…
一.前言                                大家先预计一下以下四个函数调用的结果吧! var test = function(){ console.log('hello world') return 'fsjohnhuang' }test.call() // ① Function.prototype.call(test) // ② Function.prototype.call.call(test) // ③ Function.prototype.call.call(…
探索 Reflect.apply 与 Function.prototype.apply 的区别 众所周知, ES6 新增了一个全局.内建.不可构造的 Reflect 对象,并提供了其下一系列可被拦截的操作方法.其中一个便是 Reflect.apply() 了.下面探究下它与传统 ES5 的 Function.prototype.apply() 之间有什么异同. 函数签名 MDN 上两者的函数签名分别如下: Reflect.apply(target, thisArgument, arguments…
前言 前段时间面试遇见一题,题目内容大概是 function Parent() { this.prop = 'parent'; } Parent.prototype.get = function() { alert(this.prop); }; Parent.prototype.show = function() { setTimeout(this.get, 100); }; var child = new Parent(); child.show(); // ? 分析 上述题目考察的是this…