012_call和apply区别

【012_call和apply区别】眼前多少难甘事,自古男儿当自强。这篇文章主要讲述012_call和apply区别相关的知识,希望能为你提供帮助。
一、

function fn(a,b) { console.log(this); } fn.call(null,1,2); //call为参数方式 fn.apply(null,[1,2]); //apply为数组方式/*输出=> Object [global] { DTRACE_NET_SERVER_CONNECTION: [Function], DTRACE_NET_STREAM_END: [Function], DTRACE_HTTP_SERVER_REQUEST: [Function], DTRACE_HTTP_SERVER_RESPONSE: [Function], DTRACE_HTTP_CLIENT_REQUEST: [Function], DTRACE_HTTP_CLIENT_RESPONSE: [Function], global: [Circular], process: process { title: ‘/usr/local/bin/node‘, version: ‘v10.3.0‘, versions: { http_parser: ‘2.8.0‘, node: ‘10.3.0‘, v8: ‘6.6.346.32-node.9‘, uv: ‘1.20.3‘, zlib: ‘1.2.11‘, ares: ‘1.14.0‘, modules: ‘64‘, nghttp2: ‘1.29.0‘, napi: ‘3‘, openssl: ‘1.1.0h‘, icu: ‘61.1‘, unicode: ‘10.0‘, cldr: ‘33.0‘, tz: ‘2018c‘ }, arch: ‘x64‘, platform: ‘darwin‘, release: { name: ‘node‘, sourceUrl: ‘https://nodejs.org/download/release/v10.3.0/node-v10.3.0.tar.gz‘, headersUrl: ‘https://nodejs.org/download/release/v10.3.0/node-v10.3.0-headers.tar.gz‘ }, argv: [ ‘/usr/local/Cellar/node/10.3.0/bin/node‘, ‘/Users/00arunalldata00/009_mystudy/010_everest/001_Everest4/20180628/201804/7.fs/11.fn.js‘ ], execArgv: [], env: { PATH: ‘/usr/local/opt/openssl/bin:/opt/vagrant/bin:/usr/local/sbin:/usr/local/opt/sqlite/bin:/usr/local/opt/openresty-openssl/bin:/usr/local/opt/icu4c/sbin:/usr/local/mysql/bin:/usr/local/opt/icu4c/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Applications/Wireshark.app/Contents/MacOS‘, NVM_RC_VERSION: ‘‘, FORCE_COLOR: ‘true‘, ELECTRON_NO_ATTACH_CONSOLE: ‘true‘, DEBUG_COLORS: ‘true‘, npm_config_color: ‘always‘, MOCHA_COLORS: ‘1‘, VERSIONER_python_VERSION: ‘2.7‘, LOGNAME: ‘arunyang‘, NVM_NODEJS_ORG_MIRROR: ‘https://nodejs.org/dist‘, XPC_SERVICE_NAME: ‘com.jetbrains.WebStorm.77156‘, PWD: ‘/Users/00arunalldata00/009_mystudy/010_everest/001_Everest4/20180628/201804/7.fs‘, NVM_CD_FLAGS: ‘-q‘, NVM_DIR: ‘/Users/arunyang/.nvm‘, SHELL: ‘/bin/zsh‘, PAGER: ‘less‘, LSCOLORS: ‘Gxfxcxdxbxegedabagacad‘, SECURITYSESSIONID: ‘186a8‘, OLDPWD: ‘/Applications/WebStorm.app/Contents/bin‘, VERSIONER_PYTHON_PREFER_32_BIT: ‘no‘, USER: ‘arunyang‘, ZSH: ‘/Users/arunyang/.oh-my-zsh‘, TMPDIR: ‘/var/folders/wy/v0w9vkf52836x21w_jz2wzlh0000gn/T/‘, SSH_AUTH_SOCK: ‘/private/tmp/com.apple.launchd.IKTjc3zbdP/Listeners‘, XPC_FLAGS: ‘0x0‘, NVM_IOJS_ORG_MIRROR: ‘https://iojs.org/dist‘, __CF_USER_TEXT_ENCODING: ‘0x1F5:0x0:0x0‘, Apple_PubSub_Socket_Render: ‘/private/tmp/com.apple.launchd.huBMuc0K3M/Render‘, LESS: ‘-R‘, LC_CTYPE: ‘‘, HOME: ‘/Users/arunyang‘ }, pid: 3023, features: { debug: false, uv: true, ipv6: true, tls_alpn: true, tls_sni: true, tls_ocsp: true, tls: true }, ppid: 2534, execPath: ‘/usr/local/Cellar/node/10.3.0/bin/node‘, debugPort: 9229, _startProfilerIdleNotifier: [Function: _startProfilerIdleNotifier], _stopProfilerIdleNotifier: [Function: _stopProfilerIdleNotifier], _getActiveRequests: [Function: _getActiveRequests], _getActiveHandles: [Function: _getActiveHandles], reallyExit: [Function: reallyExit], abort: [Function: abort], chdir: [Function: chdir], cwd: [Function: cwd], umask: [Function: umask], getuid: [Function: getuid], geteuid: [Function: geteuid], setuid: [Function: setuid], seteuid: [Function: seteuid], setgid: [Function: setgid], setegid: [Function: setegid], getgid: [Function: getgid], getegid: [Function: getegid], getgroups: [Function: getgroups], setgroups: [Function: setgroups], initgroups: [Function: initgroups], _kill: [Function: _kill], _debugProcess: [Function: _debugProcess], _debugEnd: [Function: _debugEnd], hrtime: [Function: hrtime], cpuUsage: [Function: cpuUsage], dlopen: [Function: dlopen], uptime: [Function: uptime], memoryUsage: [Function: memoryUsage], _rawDebug: [Function], moduleLoadList: [ ‘Binding contextify‘, ‘NativeModule events‘, ‘NativeModule internal/async_hooks‘, ‘NativeModule internal/errors‘, ‘Binding uv‘, ‘Binding buffer‘, ‘Binding async_wrap‘, ‘Binding config‘, ‘Binding icu‘, ‘NativeModule util‘, ‘NativeModule internal/encoding‘, ‘NativeModule internal/util‘, ‘Binding constants‘, ‘Binding util‘, ‘NativeModule internal/util/types‘, ‘Internal Binding types‘, ‘NativeModule buffer‘, ‘NativeModule internal/buffer‘, ‘NativeModule internal/process‘, ‘NativeModule assert‘, ‘NativeModule internal/assert‘, ‘NativeModule fs‘, ‘NativeModule path‘, ‘NativeModule internal/constants‘, ‘Binding fs‘, ‘NativeModule stream‘, ‘NativeModule internal/streams/pipeline‘, ‘NativeModule internal/streams/end-of-stream‘, ‘NativeModule internal/streams/legacy‘, ‘NativeModule _stream_readable‘, ‘NativeModule internal/streams/buffer_list‘, ‘NativeModule internal/streams/destroy‘, ‘NativeModule internal/streams/state‘, ‘NativeModule _stream_writable‘, ‘NativeModule _stream_duplex‘, ‘NativeModule _stream_transform‘, ‘NativeModule _stream_passthrough‘, ‘Binding fs_event_wrap‘, ‘NativeModule internal/fs/utils‘, ‘NativeModule internal/url‘, ‘NativeModule internal/querystring‘, ‘Binding url‘, ‘NativeModule internal/process/warning‘, ‘NativeModule internal/process/next_tick‘, ‘NativeModule internal/process/promises‘, ‘NativeModule internal/fixed_queue‘, ‘NativeModule internal/process/stdio‘, ‘Binding performance‘, ‘Binding trace_events‘, ‘NativeModule internal/inspector_async_hook‘, ‘Binding inspector‘, ‘NativeModule timers‘, ‘Binding timer_wrap‘, ‘NativeModule internal/linkedlist‘, ‘NativeModule internal/timers‘, ‘NativeModule internal/modules/cjs/loader‘, ‘NativeModule vm‘, ‘NativeModule internal/modules/cjs/helpers‘, ‘NativeModule console‘, ‘Binding tty_wrap‘, ‘NativeModule net‘, ‘NativeModule internal/net‘, ‘Binding cares_wrap‘, ‘Binding stream_wrap‘, ‘Binding tcp_wrap‘, ‘Binding pipe_wrap‘, ‘NativeModule internal/stream_base_commons‘ ], binding: [Function: binding], _linkedBinding: [Function: _linkedBinding], _events: { newListener: [Function], removeListener: [Function], warning: [Function] }, _eventsCount: 3, _maxListeners: undefined, _fatalException: [Function], domain: null, _exiting: false, assert: [Function: deprecated], config: { target_defaults: [Object], variables: [Object] }, setUncaughtExceptionCaptureCallback: [Function], hasUncaughtExceptionCaptureCallback: [Function], emitWarning: [Function], nextTick: [Function: nextTick], _tickCallback: [Function: _tickCallback], stdout: [Getter], stderr: [Getter], stdin: [Getter], openStdin: [Function], exit: [Function], kill: [Function], argv0: ‘/usr/local/bin/node‘, mainModule: Module { id: ‘.‘, exports: {}, parent: null, filename: ‘/Users/00arunalldata00/009_mystudy/010_everest/001_Everest4/20180628/201804/7.fs/11.fn.js‘, loaded: false, children: [], paths: [Array] } }, Buffer: { [Function: Buffer] poolSize: 8192, from: [Function: from], of: [Function: of], alloc: [Function: alloc], allocUnsafe: [Function: allocUnsafe], allocUnsafeSlow: [Function: allocUnsafeSlow], isBuffer: [Function: isBuffer], compare: [Function: compare], isEncoding: [Function: isEncoding], concat: [Function: concat], byteLength: [Function: byteLength], [Symbol(kIsEncodingSymbol)]: [Function: isEncoding] }, clearImmediate: [Function: clearImmediate], clearInterval: [Function: clearInterval], clearTimeout: [Function: clearTimeout], setImmediate: { [Function: setImmediate] [Symbol(util.promisify.custom)]: [Function] }, setInterval: [Function: setInterval], setTimeout: { [Function: setTimeout] [Symbol(util.promisify.custom)]: [Function] } } Object [global] { DTRACE_NET_SERVER_CONNECTION: [Function], DTRACE_NET_STREAM_END: [Function], DTRACE_HTTP_SERVER_REQUEST: [Function], DTRACE_HTTP_SERVER_RESPONSE: [Function], DTRACE_HTTP_CLIENT_REQUEST: [Function], DTRACE_HTTP_CLIENT_RESPONSE: [Function], global: [Circular], process: process { title: ‘/usr/local/bin/node‘, version: ‘v10.3.0‘, versions: { http_parser: ‘2.8.0‘, node: ‘10.3.0‘, v8: ‘6.6.346.32-node.9‘, uv: ‘1.20.3‘, zlib: ‘1.2.11‘, ares: ‘1.14.0‘, modules: ‘64‘, nghttp2: ‘1.29.0‘, napi: ‘3‘, openssl: ‘1.1.0h‘, icu: ‘61.1‘, unicode: ‘10.0‘, cldr: ‘33.0‘, tz: ‘2018c‘ }, arch: ‘x64‘, platform: ‘darwin‘, release: { name: ‘node‘, sourceUrl: ‘https://nodejs.org/download/release/v10.3.0/node-v10.3.0.tar.gz‘, headersUrl: ‘https://nodejs.org/download/release/v10.3.0/node-v10.3.0-headers.tar.gz‘ }, argv: [ ‘/usr/local/Cellar/node/10.3.0/bin/node‘, ‘/Users/00arunalldata00/009_mystudy/010_everest/001_Everest4/20180628/201804/7.fs/11.fn.js‘ ], execArgv: [], env: { PATH: ‘/usr/local/opt/openssl/bin:/opt/vagrant/bin:/usr/local/sbin:/usr/local/opt/sqlite/bin:/usr/local/opt/openresty-openssl/bin:/usr/local/opt/icu4c/sbin:/usr/local/mysql/bin:/usr/local/opt/icu4c/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Applications/Wireshark.app/Contents/MacOS‘, NVM_RC_VERSION: ‘‘, FORCE_COLOR: ‘true‘, ELECTRON_NO_ATTACH_CONSOLE: ‘true‘, DEBUG_COLORS: ‘true‘, npm_config_color: ‘always‘, MOCHA_COLORS: ‘1‘, VERSIONER_PYTHON_VERSION: ‘2.7‘, LOGNAME: ‘arunyang‘, NVM_NODEJS_ORG_MIRROR: ‘https://nodejs.org/dist‘, XPC_SERVICE_NAME: ‘com.jetbrains.WebStorm.77156‘, PWD: ‘/Users/00arunalldata00/009_mystudy/010_everest/001_Everest4/20180628/201804/7.fs‘, NVM_CD_FLAGS: ‘-q‘, NVM_DIR: ‘/Users/arunyang/.nvm‘, SHELL: ‘/bin/zsh‘, PAGER: ‘less‘, LSCOLORS: ‘Gxfxcxdxbxegedabagacad‘, SECURITYSESSIONID: ‘186a8‘, OLDPWD: ‘/Applications/WebStorm.app/Contents/bin‘, VERSIONER_PYTHON_PREFER_32_BIT: ‘no‘, USER: ‘arunyang‘, ZSH: ‘/Users/arunyang/.oh-my-zsh‘, TMPDIR: ‘/var/folders/wy/v0w9vkf52836x21w_jz2wzlh0000gn/T/‘, SSH_AUTH_SOCK: ‘/private/tmp/com.apple.launchd.IKTjc3zbdP/Listeners‘, XPC_FLAGS: ‘0x0‘, NVM_IOJS_ORG_MIRROR: ‘https://iojs.org/dist‘, __CF_USER_TEXT_ENCODING: ‘0x1F5:0x0:0x0‘, Apple_PubSub_Socket_Render: ‘/private/tmp/com.apple.launchd.huBMuc0K3M/Render‘, LESS: ‘-R‘, LC_CTYPE: ‘‘, HOME: ‘/Users/arunyang‘ }, pid: 3023, features: { debug: false, uv: true, ipv6: true, tls_alpn: true, tls_sni: true, tls_ocsp: true, tls: true }, ppid: 2534, execPath: ‘/usr/local/Cellar/node/10.3.0/bin/node‘, debugPort: 9229, _startProfilerIdleNotifier: [Function: _startProfilerIdleNotifier], _stopProfilerIdleNotifier: [Function: _stopProfilerIdleNotifier], _getActiveRequests: [Function: _getActiveRequests], _getActiveHandles: [Function: _getActiveHandles], reallyExit: [Function: reallyExit], abort: [Function: abort], chdir: [Function: chdir], cwd: [Function: cwd], umask: [Function: umask], getuid: [Function: getuid], geteuid: [Function: geteuid], setuid: [Function: setuid], seteuid: [Function: seteuid], setgid: [Function: setgid], setegid: [Function: setegid], getgid: [Function: getgid], getegid: [Function: getegid], getgroups: [Function: getgroups], setgroups: [Function: setgroups], initgroups: [Function: initgroups], _kill: [Function: _kill], _debugProcess: [Function: _debugProcess], _debugEnd: [Function: _debugEnd], hrtime: [Function: hrtime], cpuUsage: [Function: cpuUsage], dlopen: [Function: dlopen], uptime: [Function: uptime], memoryUsage: [Function: memoryUsage], _rawDebug: [Function], moduleLoadList: [ ‘Binding contextify‘, ‘NativeModule events‘, ‘NativeModule internal/async_hooks‘, ‘NativeModule internal/errors‘, ‘Binding uv‘, ‘Binding buffer‘, ‘Binding async_wrap‘, ‘Binding config‘, ‘Binding icu‘, ‘NativeModule util‘, ‘NativeModule internal/encoding‘, ‘NativeModule internal/util‘, ‘Binding constants‘, ‘Binding util‘, ‘NativeModule internal/util/types‘, ‘Internal Binding types‘, ‘NativeModule buffer‘, ‘NativeModule internal/buffer‘, ‘NativeModule internal/process‘, ‘NativeModule assert‘, ‘NativeModule internal/assert‘, ‘NativeModule fs‘, ‘NativeModule path‘, ‘NativeModule internal/constants‘, ‘Binding fs‘, ‘NativeModule stream‘, ‘NativeModule internal/streams/pipeline‘, ‘NativeModule internal/streams/end-of-stream‘, ‘NativeModule internal/streams/legacy‘, ‘NativeModule _stream_readable‘, ‘NativeModule internal/streams/buffer_list‘, ‘NativeModule internal/streams/destroy‘, ‘NativeModule internal/streams/state‘, ‘NativeModule _stream_writable‘, ‘NativeModule _stream_duplex‘, ‘NativeModule _stream_transform‘, ‘NativeModule _stream_passthrough‘, ‘Binding fs_event_wrap‘, ‘NativeModule internal/fs/utils‘, ‘NativeModule internal/url‘, ‘NativeModule internal/querystring‘, ‘Binding url‘, ‘NativeModule internal/process/warning‘, ‘NativeModule internal/process/next_tick‘, ‘NativeModule internal/process/promises‘, ‘NativeModule internal/fixed_queue‘, ‘NativeModule internal/process/stdio‘, ‘Binding performance‘, ‘Binding trace_events‘, ‘NativeModule internal/inspector_async_hook‘, ‘Binding inspector‘, ‘NativeModule timers‘, ‘Binding timer_wrap‘, ‘NativeModule internal/linkedlist‘, ‘NativeModule internal/timers‘, ‘NativeModule internal/modules/cjs/loader‘, ‘NativeModule vm‘, ‘NativeModule internal/modules/cjs/helpers‘, ‘NativeModule console‘, ‘Binding tty_wrap‘, ‘NativeModule net‘, ‘NativeModule internal/net‘, ‘Binding cares_wrap‘, ‘Binding stream_wrap‘, ‘Binding tcp_wrap‘, ‘Binding pipe_wrap‘, ‘NativeModule internal/stream_base_commons‘ ], binding: [Function: binding], _linkedBinding: [Function: _linkedBinding], _events: { newListener: [Function], removeListener: [Function], warning: [Function] }, _eventsCount: 3, _maxListeners: undefined, _fatalException: [Function], domain: null, _exiting: false, assert: [Function: deprecated], config: { target_defaults: [Object], variables: [Object] }, setUncaughtExceptionCaptureCallback: [Function], hasUncaughtExceptionCaptureCallback: [Function], emitWarning: [Function], nextTick: [Function: nextTick], _tickCallback: [Function: _tickCallback], stdout: [Getter], stderr: [Getter], stdin: [Getter], openStdin: [Function], exit: [Function], kill: [Function], argv0: ‘/usr/local/bin/node‘, mainModule: Module { id: ‘.‘, exports: {}, parent: null, filename: ‘/Users/00arunalldata00/009_mystudy/010_everest/001_Everest4/20180628/201804/7.fs/11.fn.js‘, loaded: false, children: [], paths: [Array] } }, Buffer: { [Function: Buffer] poolSize: 8192, from: [Function: from], of: [Function: of], alloc: [Function: alloc], allocUnsafe: [Function: allocUnsafe], allocUnsafeSlow: [Function: allocUnsafeSlow], isBuffer: [Function: isBuffer], compare: [Function: compare], isEncoding: [Function: isEncoding], concat: [Function: concat], byteLength: [Function: byteLength], [Symbol(kIsEncodingSymbol)]: [Function: isEncoding] }, clearImmediate: [Function: clearImmediate], clearInterval: [Function: clearInterval], clearTimeout: [Function: clearTimeout], setImmediate: { [Function: setImmediate] [Symbol(util.promisify.custom)]: [Function] }, setInterval: [Function: setInterval], setTimeout: { [Function: setTimeout] [Symbol(util.promisify.custom)]: [Function] } } */



    推荐阅读