万维广告联盟

什么是原型对象和原型链,为什么要使用原型链呢?

1、原型对象(Person.prototype)是 构造函数(Person)的一个实例。 2、JavaScript是⾯向对象的,每个实例对象都有⼀个__proto__属性,该属性指向它的原型对象,这个实例对象的构造函数有⼀个原型属性 prototype,与实例的proto属性指向同⼀个对象。当⼀个对象在查找⼀个属性的时候,⾃⾝没有就会根据__proto__向它的原型进⾏查找,如果 都没有,则向它的原型的原型继续查找,直到查到Object.prototype.proto_为null,这样也就形成了原型链。 原型链的顶层就是Object.prototype,而这个对象的是没有原型对象的。

使用JS实现文件下载代码

// create URL and Link const url = window.URL.createObjectURL(blob); const a = document.createElement("a"); a.href = url; a.download = filename; document.body.appendChild(a); // Invoke download a.click(); // remove URL and Link window.URL.revokeObjectURL(url); a.remove();

Vue3父组件与子组件双向数据传值展示和修改

子组件中通过computed计算属性监测到值变化后,向父组件发送消息并更改父组件值 const value: any = computed({ get: () => props.content, set: (val) => context.emit('update:content', val) });

简要说明var、let、const之间的区别

var声明变量可以重复声明,而let不可以重复声明 var是不受限于块级的,而let是受限于块级 var会与window相映射(会挂一个属性),而let不与window相映射 var可以在声明的上面访问变量,而let有暂存死区,在声明的上面访问变量会报错 const声明之后必须赋值,否则会报错 const定义不可变的量,改变了就会报错 const和let一样不会与window相映射、支持块级作用域、在声明的上面访问变量会报错

JavaScript数组去重的两种方法

1、indexof 去重使用for遍历后使用indexof判断数组元素是否存在,如果不存在那么push到数组中 var arr =[1,6,12,0,4,7,6,3]; var arr1 = []; // 新建一个数组来存放arr中的值 for(var i=0,len=arr.length;i<len;i ){ if(arr1.indexOf(arr[i]) === -1){ arr1.push(arr[i]); } } 2、ES6方法set()去重 let arr = [212, 3, 25, 3, 6, 7, 25]; let item = [...new Set(arr)];

关于forEach、for in、for of三者遍历数据的说明

forEach更多的用来遍历数组 for in 一般常用来遍历对象或json for of数组对象都可以遍历,遍历对象需要通过和Object.keys() for in循环出的是key,for of循环出的是value

简单介绍下 Set、Map的区别

应用场景Set用于数据重组,Map用于数据储存 Set:  (1)成员不能重复 (2)只有键值没有键名,类似数组 (3)可以遍历,方法有add, delete,has Map: (1)本质上是健值对的集合,类似集合 (2)可以遍历,可以跟各种数据格式转换

pointer-events: none 是点击dom元素事件触发产生无效状态

pointer-events: none; 是看得到却摸不着,点击不到,点击会穿透触发到下层元素的css属性。 <div style="pointer-events: none;"></div>

怎么判断数组所有元素都相同

通过ES6 Set方法去重,再判断去重后的数组长度是否等于1 let arr = [23, 23, 23, 23, 23, 23, 23]; let item = [...new Set(arr)]; if(item.length === 1){ console.log("true") }else{ console.log("false") }