基础题
我出的这套基础题,面试(当面答题,想百度是不存在的)好多人,情况都比较差,没有令我满意的,是我出题太难了么?
介绍一下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) 这个接口,进行跨窗口通信。
什么是点击劫持,如何防范
点击劫持:
允许恶意网页以用户的名义点击 “受害站点”。
通常恶意网页在受害网站链接之上放置一个透明
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。