笔试面试总结
来源:互联网 发布:想学电脑编程 编辑:程序博客网 时间:2024/05/29 19:13
2、string API: charAt,contact,indexOf(查询字符串),lastIndexOf,match(返回匹配串),replace,slice(返回一段),split,substr
3、原生 元素(Element)节点 API:DOM节点分为 文档节点、元素节点、属性节点、文本节点、注释节点
元素节点集合对象 NodeList 是一个类数组对象其中 list.item(0)相当于 list[0]
属性:
属性:attributes,className,id,style,title
内容:childNodes,firstChild,lastChild,innerHTML,textContent
周边:previousSibling,nextSibling,parentNode
方法:
增:appendChild,cloneNode,insertBefore(新子节点,位置子节点),(createElement在document节点才有)
删:removeChild
查:getElementsByTagName,hasChildNodes(getElementsByName和getElementById在document节点才有)
改:replaceChild
属性:getAttribute(返回指定属性的值),getAttribute(返回属性节点对象),hasAttribute(存在指定属性),hasAttribute(存在属性),
removeAttribute,removeAttributeNode,setAttribute,setAttributeNode,(createAttribute在document节点才有)
4、js面向对象:
function MyClass(){
var private = 0; //私有成员
}
MyClass.prototype.public = 0; //公开成员
5、常考算法:
(1)、字符串判重,用JS对象自带的map功能
(2)、字符替换
var name = 'aaa bbb ccc';
var result =name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);
(3)、数组的深拷贝和浅拷贝
浅拷贝:A.concat([]);
深拷贝:JSON.parse(JSON.stringify(obj));
7、作用域
函数作用域(没有花括号包起来的块级作用域)。作用域链,就是嵌套的函数作用域。(变量所在的作用域离当前作用域越远,读取变量的性能越差,因此要尽量使用当前作用域的变量)
例一:
var scope="global";
function t(){
console.log(scope); // undefined,在这个函数的任意位置定义的变量,作用域都是整个函数及其嵌套的内部函数
var scope="local";
console.log(scope); // local ,相当于变量的定义提前,但初始化没有提前,在原位置
}
t();
例二:
var a = 0;
function f(){
console.log(a); // funtion a(){},有同名变量和函数时,这个标识符的定义被提前,且初始定义为这个同名函数
var a = 1;
console.log(a); // 1
function a(){}
console.log(a); // 1
}
f();
全局作用域
function 外面定义的变量、没有var 定义的变量、window的成员
8、跨域问题
ajax不能向不同源的URL发起请求;JS不能查询或操作不同源的iframe。同源是指协议、域名、端口都相同。
特征:不能请求跨域数据,但能下载跨域的JS;JS操作是否跨域,要看iframe是不是引入自己的iframe,而不是看iframe是不是和自己来自同一个域。
解决办法
(1)jsonp(JSON with Padding)解决ajax跨域问题。
用<script>请求一段JS文件,后台组装一个JS片段返回。返回的JS片段类似于 callback(数据),其中callback是源域里的function,数据即源域想要的数据。
jquery 的 jsonp 接口,$.getJSON('http://example.com/data.php?callback=?',function(jsondata){});
如果不跨域,就ajax。如果跨域,就新建一个临时函数,假设是f,并把?替换成f。后台读取callback参数,返回 f(jsondata)
(2)设置document.domain ,解决JS跨域问题,前提是主域名相同
JS可以把一个iframe的domain设置成其父域名。例如可以在a.example.com的iframe中写document.domain='example.com'
在这个基础上,可以解决ajax跨域问题。先在目标域的iframe中通过ajax获取数据,放到这个iframe中。再让源域的JS去读取。
(3)HTML 5 的window.postMessage() 提供跨域通信能力,从而解决跨域函数调用、数据传递等问题
在源iframe中写 win.postMessage('数据','*'); win是目标iframe.contentWindow,第二个参数用于匹配目标域名
在目标iframe中写 window.onmessage = function(e){console.log(e.data);}
(4)利用XHR2(XMLHttpRequest Level 2)的CORS(跨域资源共享,Cross-Origin Resource Sharing)特性,解决ajax跨域问题
后台设置响应头 header("Access-Control-Allow-Origin:http://www.test.com"); ,即表示允许浏览器发送来自www.test.com的请求
设置响应头 Access-Control-Allow-Credentials:true ,即表示跨域请求时,允许带cookie。同时需要在发送跨域请求时设置xhr.withCredentials = true
10、DOM标准
DOM 0 :形成标准前
DOM 1 :1998年,支持HTML
DOM 2 :2000年,支持CSS,事件
DOM 3 :2003年,增加isEqualNode()、isSameNode()等方法
DOM 4 :2015年
11、垃圾回收
显式释放变量:置null
自动垃圾回收机制:
(1)、标记清除法:对不被引用的变量做标记,垃圾回收器定时清除这些变量
(2)、引用计数法(IE 6):对变量记录引用数,垃圾回收器定时清除引用为0的变量
引用计数法在循环引用的情况下会出现内存泄漏
var a = {
k:b
}
var b = {
k:a
}
IE的内存泄漏bug:删除元素没有先删除上面的事件,包装一个String对象 “a”.length
12、全局函数与运算符
instanceof 和 typeof 是运算符,typeof返回的是基础类型 ,instanceof 判断的是构造器或原型,返回Boolean
13、遍历数组
for循环:是个表达式
for-in循环:是个表达式,遍历的是key。不只遍历数组成员,还遍历自定义属性 和 原型链上定义的属性,也可以用于遍历对象。
forEach循环:是个函数,不能break、continue、return
for-of:ES6引入,是个表达式,遍历的是value,只遍历数组成员
- 总结 - 笔试 面试
- [转载]面试笔试总结
- 总结 - 笔试 面试
- 【转】笔试面试总结
- 笔试面试总结
- c++笔试面试总结
- 面试及笔试总结
- 笔试面试经历总结
- 第一次笔试、面试总结
- 笔试面试总结
- 笔试面试失败总结
- 面试笔试总结
- 面试笔试总结
- 面试笔试总结 20140321
- java笔试面试总结
- IT笔试面试总结
- C++笔试面试总结
- *****面试笔试总结
- uCrop图片裁剪开源库使用总结
- Android 中的Intent在两个Acitvity传递数据示例
- 好用的C++数据库访问层
- 推荐几个swift学习网站
- python 正则表达式
- 笔试面试总结
- R语言数据集合并、数据增减、不等长合并
- HTML5的canvas画布常用绘图命令总结
- POJ 3734_Blocks
- 转知乎:如何阅读源代码-- 源码理解不是读出来的,是用来debug出来的.
- 什么是引力波
- LeetCode55. Jump Game
- hdoj4956Poor Hanamichi【暴力】
- HUST 1017 Exact Cover(舞蹈链模板)