五十三:object对象的常用方法
Object.hasOwnProperty( ) 检查属性是否被继承
Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型
Object.propertyIsEnumerable( ) 是否可以通过 for/in 循环看到属性
Object.toLocaleString( ) 返回对象的本地字符串表示
Object.toString( ) 定义一个对象的字符串表示
Object.valueOf( ) 指定对象的原始值
五十四:如何编写高性能JS,或者换种方法问:如何优化你的js代码。
1、封装方法提高js代码的可复用性。
2、注意全局作用域与局部作用域的使用,防止变量污染。
3、使用一次 innerHTML 赋值代替构建 dom 元素
4、使用三目运算符替代条件分支
5、需要不断执行的时候,优先考虑使用 setInterval
五十五:聊一聊作用域与变量提升。
1、js 的运行主要分两个阶段:js 的预解析和运行,预解析阶段所有的变量声明和函数定义都会提前,但是变量的赋值不会提前 。
2、主要分ES6之前与ES6之后。
1.1 es6之前用全局作用域指向的是window,局部作用域一般用在函数内部或者循环体中,声明了变量但没有赋值,直接调用这个变量前调用就报错undefined
1.2 es之后局部作用域块,出了这个局部作用域块就是undefined,声明了变量没有赋值,在这个变量前调用就直接报错。
五十六:说一说你所只知道的异步加载
1、setinterval,settimeout、ajax、es6的promise(异步变成的解决方案)
异步:先加载微任务(then,catch) 再在加载 宏任务(setinterval,settimeout),
五十七:简述一下 Sass、Less,且说明区别?
答:他们是动态的样式语言,是 CSS 预处理器,CSS 上的一种抽象层。他们是一种特殊的语法/语 言而编译成 CSS。
两者不同:
1、变量符不一样,less 是@,而 Sass 是$;
2、Sass 支持条件语句,可以使用 if{}else{},for{}循环等等。而 Less 不支持;
3、Sass 是基于 Ruby 的,是在服务端处理的,而 Less 是需要引入 less.js 来处理 Less 代码输出 Css 到浏览器
五十八:请说一下你对 this 的理解
全局:this → window对象
函数:this → 指向是该函数的形参
事件:this → 当前的操作对象
构造函数:this → 原型对象
箭头函数: this → 子元素的父级
五十九:请列举前端有哪些性能优化的方式?
1、减少 http 请求次数:CSS Sprites, JS、CSS 源码压缩、图片大小控制合适;网页
Gzip,CDN 托管,data 缓存 ,图片服务器。
2、 前端模板 JS+数据,减少由于 HTML 标签导致的带宽浪费,前端用变量保存 AJAX
请求结果,每次操作本地变量,不用请求,减少请求次数
3、 用 innerHTML 代替 DOM 操作,减少 DOM 操作次数,优化 javascript 性能。
4、 当需要设置的样式很多时设置 className 而不是直接操作 style。
5、 少用全局变量、缓存 DOM 节点查找的结果。减少 IO 读取操作。
6、 避免使用 CSS Expression(css 表达式)又称 Dynamic properties(动态属性)。
7、 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。
8、 避免在页面的主体布局中使用 table,table 要等其中的内容完全下载之后才会显 示出来,显示比 div+css 布局慢。
六十:js有哪些方式会隐式转换为false
undefined、null、Boolean:false、空字符串