面试官的小久久

Posted dshvv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试官的小久久相关的知识,希望对你有一定的参考价值。

前言
这几次面试的是工资略微高的,也就是说不是初级前端了,我发现这些企业技术负责人都不用我再去写面试题了,可能是人家觉得你都面试中高级了,基础就不考试你了吧。
下边是面试经过被问到的

面试题
讲解一下Function.prototype.bind()的认知?
技术分享图片

打开火狐的js文档你会发现,js内置(类)对象Function,有3个自己的(静态)原型方法。碰巧的是这3个方法,均与函数内部的上下文this有关。
call、apply、bind都是为了改变某个函数运行时的上下文而存在的,也就是改变函数内部this的指向,
当然都可以借助此特性来实现es6之前的继承,在特定的作用域中调用这些方法,能改变制定函数的作用域,实际上是改变函数体内 this 的值 。

改变函数作用域,修改函数运行时的this指针

技术分享图片
function People(name){
    this.name=name;
    this.say=function (time,msg) {
        console.log(time+‘:‘+this.name+‘说‘+msg)
    }
}

var xm=new People(‘小明‘);
var xh=new People(‘小红‘);

//用call实现
xm.say.call(xh,2018,‘你好啊‘)

//用apply
xm.say.apply(xh,[2018,‘你好啊‘])

//用bind
xm.say.bind(xh)(2018,‘你好啊‘)
View Code


实现继承

技术分享图片
function People(){
    this.say=function () {
        console.log(this.name+‘说:我是人类‘)
    }
}

//利用call实现继承
function Stu(name) {
    People.call(this)//会执行一遍People内部代码,其中执行的上下文对象是这个函数的this,本质上相当于把People内代码copy到Stu里边
    this.name=name
    this.test=function () {
        console.log(‘测试‘)
    }
}
stu.say()
stu.test()
View Code
技术分享图片
function People(){
    this.say=function () {
        console.log(this.name+‘说:我是人类‘)
    }
}

function Stu(name) {
    this.name=name
    this.test=function () {
        console.log(‘测试‘)
    }
    // People.bind(this)()//写法二

}

var stu=new Stu(‘小明‘);
People.bind(stu)()// 写法一:函数A.bind(对象a)(arg)这样的话,函数A内部的调用对象就是对象a了,这样写法有点死板,写法2是动态的
stu.say()
stu.test()
View Code

 

 

 




 

以上是关于面试官的小久久的主要内容,如果未能解决你的问题,请参考以下文章

最新出炉 | 2021年Android面试,被锤没关系,先要摸清面试官的套路

“如何用我的编码打动面试官?我可以在我为打动面试官的问题编写的代码中采用哪些做法?

4个改变你编程技能的小技巧,一文全懂

4个改变你编程技能的小技巧,从理论到实践!

程序猿工资真有那么高吗?学Java开发如何短期内迅速提升到40K?带你直击面试官的痛点~

去年去阿里面试,被问到java 多线程,我是这样手撕面试官的