作者: 招投标秘籍 | 来源:发表于2021-04-06 22:34 被阅读0次

1.arguments

1.1arguments怎么理解

arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。例如,如果一个函数传递了三个参数,你可以以如下方式引用他们:

arguments[0]
arguments[1]
arguments[2]

1.2arguments是伪数组

function fn(){
  console.log(arguments)
}
图片.png

其实我们再看下面的原型,是没有数组里面共有原型的,所以是伪数组。


图片.png

2.this

2.1this是什么

function fn(){
 console.log(this)
}
fn()//this如果什么都不给默认指向小写的window
image.png
function fn(){
  'use strict'
  console.log(this)
}
fn()//这样this就不是window
image.png

我们还有一种方法可以让函数传什么this就是什么,所以说this是隐藏的参数(call的第一个参数).

function fn(){
  console.log(this)
}
fn.call(1)
image.png

2.2两种调用方式

let person = {
  name: 'frank',
     sayHi(this){
        console.log(` ` + this.name)
  }
}
第一种小白调用方法
person.sayHi()
第二种大师调用方法,推荐用第二种方法,this就是第一个参数,所以推荐以后写的时候转化为这种写法
person.sayHi.call(person)

2.3this经典面试题

var obj = {
  foo: function(){
    console.log(this)
  }
}
var bar = obj.foo
obj.foo() // 打印出的 this 是 obj
bar() // 打印出的 this 是 window

解题思路:
1.我们第一步先转化函数的调用模式,转化成call方式.
2.obj.foo()转化为obj.foo.call(obj)
3.bar()转化为bar.call(undefined)
4.所以第一是obj,第二个按理说打印出来的 this 应该就是 undefined 了吧,但是浏览器里有一条规则:如果你传的 context 就 null 或者 undefined,那么 window 对象就是默认的 context(严格模式下默认 context 是 undefined) 因此上面的打印结果是 window.
本文为本人的原创文章,著作权归本人和饥人谷所有,转载务必注明来源.

相关文章

网友评论

    本文标题:

    本文链接:https://www.haomeiwen.com/subject/fbmukltx.html