012_call和apply区别

Posted arun_python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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] } }
*/

  

以上是关于012_call和apply区别的主要内容,如果未能解决你的问题,请参考以下文章

转 - JS 中 call 和 apply 以及 bind 的区别

Javascript中call和apply的区别与详解

JS中 call和apply的区别和作用

call和apply的联系和区别浅解

js中call和apply的区别

js学习总结----call和apply和bind的区别