开发者社区> 问答> 正文

作为前端面试官,我会问哪些问题?(基础篇:附答案)

基础题

我出的这套基础题,面试(当面答题,想百度是不存在的)好多人,情况都比较差,没有令我满意的,是我出题太难了么?

介绍一下js原型继承

查看答案

当我们想要从 object 中读取一个缺失的属性时,js 会自动从原型中获取它

举例:

const animal = {

  eats: true,

  sleep: true,

  voice: '',

  bark(){

    console.log(this.voice);

  },

}

const dog = {

  run: true,

  voice: 'wang~~ wang~~',

}

dog.__proto__ = animal;

console.log(dog.run) // true

console.log(dog.eats) // true

console.log(dog.bark()) // wang~~ wang~~

console.log(dog.sleep) // true


总结:

所有的对象都有一个隐藏的 [[Prototype]] 属性,它可以是另一个对象或者 null。

可以使用 obj.proto 进行访问。

[[Prototype]] 引用的对象称为“原型”。

要读取 obj 属性或者调用一个方法,而且它不存在,那么就会尝试在原型中查找它。

写/删除直接在对象上进行操作,它们不使用原型(除非属性实际上是一个 setter)。

我们调用 obj.method(),而且 method 是从原型中获取的,this 仍然会引用 obj。

方法重视与当前对象一起工作,即使它们是继承的。

扩展:

构造函数继承、组合继承、寄生继承、寄生组合式继承。

说说什么是防抖、节流,在实际应用中在哪些场景会用到它们

防抖:

连续触发的事件(高频),在单位时间T内只执行最后一次,

若在T内再次触发,则清空定时重新计算。场景:模糊搜索

节流:

连续触发的事件(高频),在单位时间T内只执行一次。窗口滚动,获取滚动条top

javascript如何实现跨窗口通信

若子域同源,则可以通过设置document.domain将窗口视为同源站点,进行通信,

例如本地储存等等方式。

若不同源,我们可以在通过 postMessage(data,targetOrigin) 这个接口,进行跨窗口通信。

什么是点击劫持,如何防范

点击劫持:

允许恶意网页以用户的名义点击 “受害站点”。

通常恶意网页在受害网站链接之上放置一个透明

展开
收起
pandacats 2019-12-11 09:53:05 823 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载