秒杀大部分公司的面试题,精心整理合集,值得收藏(javascript篇) .
### 问题解析与答案 #### 1. 如何定义类,并扩展其原型? ```javascript // 定义类 function A() {} // 扩展原型 A.prototype.B = function() { console.log('This is method B'); }; // 使用类 var instance = new A(); instance.B(); // 输出: This is method B
2. 如何添加HTML元素的事件,有几种方法?
- (1)为HTML元素的事件属性赋值:
<button onclick="myFunction()">Click me</button>
- (2)在JS中使用
ele.on*** = function() {…}var button = document.getElementById('myButton'); button.onclick = function() { console.log('Button clicked'); };
- (3)使用DOM2的添加事件的方法
addEventListener 或 attachEvent// addEventListener var button = document.getElementById('myButton'); button.addEventListener('click', function() { console.log('Button clicked'); }); // attachEvent (IE specific) var button = document.getElementById('myButton'); button.attachEvent('onclick', function() { console.log('Button clicked'); });
3. documen.write和 innerHTML的区别?
document.write 只能重绘整个页面。innerHTML 可以重绘页面的一部分。
4. 多浏览器检测通过什么?
- (1)
navigator.userAgent - (2) 不同浏览器的特性,如
addEventListener
5. JS的基础对象有哪些,window和document的常用的方法和属性列出来?
- 基础对象:
String, Number, Boolean - Window:
- 方法:
setInterval, setTimeout, clearInterval, clearTimeout, alert, confirm, open - 属性:
name, parent, screenLeft, screenTop, self, top, status
- Document:
- 方法:
createElement, execCommand, getElementById, getElementsByName, getElementByTagName, write, writeln - 属性:
cookie, doctype, domain, documentElement, readyState, URL
6. 前端开发的优化问题有哪些?
- 减少http请求次数(CSS sprite, data uri)
- JS,CSS源码压缩
- 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费
- 用
innerHTML 代替DOM操作,减少DOM操作次数,优化JavaScript性能 - 用
setTimeout 来避免页面失去响应 - 用 hash-table 来优化查找
- 当需要设置的样式很多时设置 className 而不是直接操作 style
- 少用全局变量
- 缓存DOM节点查找的结果
- 避免使用CSS Expression
- 图片预载
- 避免在页面的主体布局中使用 table
7. 如何控制网页在网络传输过程中的数据量?
- 启用 GZIP 压缩
- 保持良好的编程习惯,避免重复的 CSS,JavaScript 代码,多余的 HTML 标签和属性
8. Flash、Ajax各自的优缺点,在使用中如何取舍?
- Ajax 优势:
- Flash 优势:
- 多媒体处理
- 兼容性
- 矢量图形 比 SVG,Canvas 优势大很多
- 客户端资源调度,比如麦克风,摄像头
- 取舍:根据项目需求和目标受众选择。如果需要展示复杂的多媒体内容,优先考虑Flash;如果需要快速加载且兼容性好的内容,可以选择Ajax。