![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
js
SM-xiao
希望大家多多支持我的原创文章
展开
-
结合源码解析-vue响应式原理
vue响应式原理在之前vue2.0中,vue的响应式原理主要是基于Object.defineProperty进行数据劫持然后结合观察者模式(发布订阅模式)来实现数据的双向绑定。function Dep() {//主题对象 this.subs = []; //订阅者列表}Dep.prototype.notify = function() { //主题对象通知订阅者 this.subs...原创 2020-12-30 16:54:41 · 101 阅读 · 0 评论 -
浏览器的渲染详解
浏览器渲染详解浏览器渲染主要分为以下几步:这个过程中涉及几个重要的知识点浏览器渲染主要分为以下几步:生成DOM: DOM树生成时会对dom节点进行深度优先遍历,直到该节点结束,才会去遍历下一个节点生成CSSOM树: 分析css文件和元素上的行内样式,生成页面的样式文件,CSS解析大的过程是从右向左解析的,因此避免使用嵌套太深的标签,会影响解析性能创建Render树: 将DOM树和CSSOM树进行关联起来布局Layout: 浏览器根据render树进行布局,计算出每个节点的坐标绘制Paintin原创 2020-12-30 16:53:19 · 860 阅读 · 0 评论 -
JavaScript中var、let、const的区别
在最新的ES6中添加了两个变量声明的方式:let、constvar—变量声明会提升,没有块级作用域在非严格模式下,没有用var声明的变量会被默认为全局变量,但是在严格模式下会报错。使用var定义全局变量时,不能用delete删除,而不使用var定义时可以删除。var声明相同的变量时,后者会覆盖前者。变量声明提升:没有块级作用域:声明在for循环中的变量,跳出循环仍然可以使用let —...原创 2019-04-26 12:24:47 · 197 阅读 · 1 评论 -
行内元素、行内块元素、块级元素的区别
行内元素:display:inline特点:在水平方向上排列,它的宽高随内容而定。不可以设置宽高,可以设置行高。设置margin和padding的上下无效。常见的内联元素有:a,b,br,em,font,i,img,input,label,select,small,span,strike(中划线),strong注意:1.虽然行内元素设置行高之后会有位置的变化,但是并没有改变盒子大小。2...原创 2019-04-26 21:14:11 · 1954 阅读 · 1 评论 -
如何解决在JS中0.1+0.2!=0.3的问题
如何解决在JS中0.1+0.2!=0.3的问题在计算机中数字是以多位二进制的方式进行存储,在js中数字采用的是双精度标准进行存储。在谷歌中可以用:function numbersequal(a, b) {return Math.abs(a - b) < Number.EPSILON;}var a = 0.1 + 0.2,b = 0.3;console.log(numberse...原创 2019-04-26 21:20:08 · 1162 阅读 · 1 评论 -
slice,splice,split区别和作用
slice,splice,split区别和作用slice(start,[end])方法:该方法是对数组进行部分截取,该方法返回一个新数组,参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选)。包含了源函数从start到 end 所指定的元素,但是不包括end元素,比如a.slice(0,3);1.如果出现负数就把负数与长度相加后再划分。2.slice中...原创 2019-04-26 21:31:09 · 3313 阅读 · 0 评论 -
call,apply,bind的区别和用法
用途:改变this指向区别:传参列表不同 function Person(name,age){ this.name=name; this.age=age; this.job=function(){ console.log("teacher"); } } var newPerson={}; Person.call(newPers...原创 2019-04-28 16:39:19 · 970 阅读 · 0 评论 -
显示类型转换和隐式类型转换
显示类型转换 1.Number():函数把对象的值转换为数字,如果对象的值无法转换为数字,那么 Number() 函数返回 NaN。 var a = 'true'; console.log(typeof(Number(a)) + '-' + Number(a)); // number-NaN var a = '1a'; c...原创 2019-04-28 17:26:37 · 2168 阅读 · 0 评论 -
总结:常见的创建对象的几种方式
1.通过Object构造函数或对象字面量创建单个对象Var obj=new Object(); //在外部生成Var person={name:’aa’,age:12};缺点:使用同一个接口创建很多对象,会产生大量的重复代码2.工厂模式:在一个函数内创建好对象,然后把函数返回 //在内部生成function creatObj(name, age) {var obj =...原创 2019-04-28 17:33:58 · 3108 阅读 · 0 评论