JavaScript面试考点
JavaScript面试考点
zpfnext
这个作者很懒,什么都没留下…
展开
-
moudle chunk bundle分别什么意思,有何区别?
const instanceOf = (A,B) => {let p =A;while§ {if(p === B.prototype) {return true}p = p.proto}return false}1原创 2020-10-02 23:58:35 · 347 阅读 · 0 评论 -
前端代码为何要进行构建和打包?
const instanceOf = (A,B) => {let p =A;while§ {if(p === B.prototype) {return true}p = p.proto}return false}1原创 2020-10-02 23:55:09 · 1086 阅读 · 1 评论 -
如何使用链表指针获取JSON的节点值?
const json = { a: {b: {c: 1}}, d: {e: 2}}const path = ['d', 'e']let p = jsonpath.forEach(k => { p = p[k]})原创 2020-10-02 01:09:27 · 142 阅读 · 0 评论 -
instanceof的原理,并用代码实现?
一、Event对象Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。事件通常与函数结合使用,函数不会在事件发生前被执行!当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细信息(包括导致事件的元素、事件的类型、以及其它与特定事件相关的信息等。这个对象是在执行事件时,浏览器通过函数传递过来的。)都会被临时保存到一个指定的地方——event对象,供我们在需要的时候调用二、获取event对象在 W3C 规范中,event 对象是随事件处理函原创 2020-10-01 23:07:26 · 121 阅读 · 0 评论 -
事件对象
什么是事件对象?在触发DOM上的事件都会产生一个对象1、DOM中的事件对象(1)、type:获取事件类型(2)、target:事件目标(3)、stopPropagation() 阻止事件冒泡(4)、preventDefault() 阻止事件的默认行为原创 2020-10-01 17:38:28 · 105 阅读 · 0 评论 -
事件处理程序
1、HTML事件处理程序缺点:HTML代码和JS代码紧密的耦合在一起<html> <head> <title>事件流</title> <meta charset="utf-8"> </head> <body> <div id="box"> <input type="button" value="按钮" id="btn" onclick="alert('hello原创 2020-10-01 17:22:37 · 97 阅读 · 0 评论 -
从JS基础知识到JS Web API
JS基础知识,规定语法(ECMA 262标准)JS Web API,玩野操作的API (W3C标准)前者是后者的基础,两者结合才能真正实际应用原创 2020-10-01 13:20:30 · 72 阅读 · 0 评论 -
property和attribute的区别?
property:修改对象属性,不会体现到html结构中attribute:修改html属性,会改变html结构两者都会引起DOM重新渲染原创 2020-10-01 13:08:13 · 1881 阅读 · 0 评论 -
DOM是哪种数据结构?
树(DOM树)原创 2020-10-01 12:53:24 · 1199 阅读 · 1 评论 -
一次性插入多个节点,如何优化 DOM 操作的性能?
缓存DOM查询结果//不缓存DOM查询结果for(let i=0; i < document.getElementsByTagName('p').length; i++) {//每次循环都会计算length,频繁进行DOM查询}//缓存DOM查询结果const Plist = document.getElementsByTagName('p')const length = pList.lengthfor(let i = 0; i<length; i++) {//缓存lengt原创 2020-10-01 12:51:32 · 720 阅读 · 0 评论 -
property和attribute
property:修改对象属性,不会体现到html结构中attribute:修改html属性,会改变html结构两者都会引起DOM重新渲染原创 2020-10-01 12:10:43 · 70 阅读 · 0 评论 -
事件流
123原创 2020-09-30 23:47:12 · 62 阅读 · 0 评论 -
for...of在异步中的应用
function muti(num) { return new Promise(resolve => { setTimeout(() => { resolve(num*num) }, 1000); })}const nums = [1,2,3]nums.forEach(async (i) => { const res = await muti(i) console.log(res)})同步原创 2020-09-30 17:49:43 · 597 阅读 · 0 评论 -
问答题:什么是宏任务和微任务,两者有什么区别?和DOM渲染有什么关系?
在这里插入代码片原创 2020-09-30 10:28:42 · 2009 阅读 · 0 评论 -
问答题:异步应用场景?
网络请求,如ajax加载图片定时任务,如setTimeout原创 2020-09-29 18:41:08 · 63 阅读 · 0 评论 -
手写 Promise 加载一张图片
function loadImg(src) { const p = new Promise( (resolve, reject) => { const img = document.createElement('img') img.onload = () => { resolve(img) } img.onerror = () => {原创 2020-09-29 18:36:34 · 86 阅读 · 0 评论 -
问答题:同步和异步的区别是什么?
基于JS的单线程语言异步不会阻塞代码的执行同步会阻塞代码的执行原创 2020-09-29 17:01:59 · 239 阅读 · 0 评论 -
创建10个`<a>`标签,点击的时候弹出对应的序号
i 是块级作用域let a;for(let i=0;i<10;i++) { const a = document.createElement('a'); a.innerHTML = i+'<br>'; a.addEventListener('click',function(e) { e.preventDefault(); alert(i); }) document.body.appendChild(a)}错误原创 2020-09-29 16:50:46 · 240 阅读 · 0 评论 -
实际开发中闭包的应用是什么?做一个简单的cache工具
//闭包隐藏数据,只提供APIfunction createCache() { const data = {}//闭包中的数据被隐藏,不被外界访问 return { set: function(key,val) { data[key]=val; }, get: function(key) { return data[key] } }}const c = create原创 2020-09-29 16:28:47 · 50 阅读 · 0 评论 -
手写bind
Function.prototype.bind1 = function() { const args = Array.prototype.slice.call(arguments) const t = args.shift() const self = this return function () { return self.apply(t,args) }}function fn1(a,b) { console.log('this原创 2020-09-29 15:50:04 · 87 阅读 · 0 评论 -
this的不同应用场景如何取值?
使用场景1.作为普通函数2.使用call apply bind3.作为对象方法被调用4.在class方法在中被调用5.箭头函数this取什么值是在函数执行的时候确定得,不是在函数定义的时候确定的function fn1() { console.log(this)}fn1()//windowfn1.call({x:100})//{x:100}const fn2 = fn1.bind({X:200})fn2()//{x:200}const zhangsan ={原创 2020-09-29 15:03:21 · 196 阅读 · 0 评论 -
instanceof运算符
instanceof运算符返回一个布尔值,表示指定对象是否为某个构造函数的实例。var v = new Vehicle();v instanceof Vehicle // true上面代码中,对象v是构造函数Vehicle的实例,所以返回true。instanceof运算符的左边是实例对象,右边是构造函数。它的运算实质是检查右边构建函数的原型对象,是否在左边对象的原型链上。因此,下面两种写法是等价的。v instanceof Vehicle// 等同于Vehicle.prototype.is原创 2020-09-29 00:17:24 · 241 阅读 · 0 评论 -
constructor属性?
prototype对象有一个constructor属性,默认指向prototype对象所在的构造函数。function P() {}P.prototype.constructor === P// true由于constructor属性定义在prototype对象上面,意味着可以被所有实例对象继承。function P() {}var p = new P();p.constructor// function P() {}p.constructor === P.prototype.co原创 2020-09-28 21:53:44 · 127 阅读 · 0 评论 -
原型链?
对象的属性和方法,有可能是定义在自身,也有可能是定义在它的原型对象。由于原型本身也是对象,又有自己的原型,所以形成了一条原型链(prototype chain)。比如,a对象是b对象的原型,b对象是c对象的原型,以此类推。如果一层层地上溯,所有对象的原型最终都可以上溯到Object.prototype,即Object构造函数的prototype属性指向的那个对象。那么,Object.prototype对象有没有它的原型呢?回答是有的,就是没有任何属性和方法的null对象,而null对象没有自己的原型。O原创 2020-09-28 21:31:23 · 54 阅读 · 0 评论 -
判断变量是否是数组Array
1. Array.isArray() 用于确定传递的值是否是一个 Array Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false该方式是数组构造函数上的一个方法ECMAScript 5.1中新增的 在IE9以下不兼容2. 验证构造函数是否为数组instanceof 判断的是数组时返回true,否则返回false。var arr = [1,23,4];var obj = {};console.log(原创 2020-09-28 18:57:17 · 402 阅读 · 0 评论 -
prototype属性的作用
原型关系:每个class都有显示原型prototype每个实例都有隐式原型_proto_实例的_proto_指向对应class的prototype原创 2020-09-28 16:55:18 · 351 阅读 · 0 评论 -
???深拷贝和浅拷贝
➀1.1⑴ JS对象的深拷贝和浅拷贝有什么区别? ◇ 对象B复制对象A,当改变B的时候,A跟着变,那么就是浅拷贝,如果A不变,两者相互不影响,那么就是深拷贝。⑵ 数据类型: ◇ 值类型(Stack): 包括 Number, String, Boolean, Null, Undefined, Symbol(ES6),拷贝操作均属于深拷贝,因为它们操作的是实际值。 ◇ 引用类型(Heap):包括 Array, Object, Function 等对象,拷贝操作可以是浅拷贝,也可以是深拷贝。 ➁原创 2020-09-27 23:31:42 · 136 阅读 · 0 评论 -
---------------------------------JavaScript 单线程模型---------------------------------------------------
添加链接描述原创 2020-09-29 23:00:42 · 122 阅读 · 0 评论