1.javascript的typeof返回哪些数据类型
Object number function boolean underfind
2.例举3种强制类型转换和2种隐式类型转换?
强制(parseInt,parseFloat,number)
隐式(== – ===)
3.split() join() 的区别
前者是切割成数组的形式,后者是将数组转换成字符串
4.Html事件绑定有几种方式?
直接在DOM里绑定事件:<div οnclick=”test()”></div> 这种方式称为原生事件或者属性事件
在JS里通过onclick绑定:xxx.onclick = test
Dom标准通过事件添加进行绑定:addEventListener("click",test, false) //第三个参数为是否支持事件捕捉
IE事件:attachEvent("onclick",test)
5.事件绑定和普通事件有什么区别
6.IE和DOM事件流的区别
执行顺序不一样
参数不一样
事件加不加on
this指向问题
7.IE和标准下有哪些兼容性的写法
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target
8.ajax请求的时候get 和post方式的区别
一个在url后面 一个放在虚拟载体里面
有大小限制
安全问题
应用不同 一个是论坛等只需要请求的,一个是类似修改密码的
9.call和apply的区别
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)
10.ajax请求时,如何解释json数据
使用eval parse 鉴于安全性考虑 使用parse更靠谱
11.b继承a的方法
12.写一个获取非行间样式的函数
function getStyle(obj,attr,value) {
if(!value) {
if(obj.currentStyle) {
return obj.currentStyle(attr)
} else {
obj.getComputedStyle(attr,false)
}
} else {
obj.style[attr]=value
}
}
13.事件委托是什么
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
http://www.webasily.com/?p=78 例子可见此链接
14.闭包是什么,有什么特性,对页面有什么影响
闭包就是能够读取其他函数内部变量的函数。
http://blog.csdn.net/gaoshanwudi/article/details/7355794 此链接可查看(问这个问题的不是一个公司)
15.如何阻止事件冒泡和默认事件
canceBubble return false
16.添加 删除 替换 插入到某个接点的方法
obj.appendChidl()
obj.innersetBefore
obj.replaceChild
obj.removeChild
17.解释jsonp的原理,以及为什么不是真正的ajax
动态创建script标签,回调函数
Ajax是页面无刷新请求数据操作
18.javascript的本地对象,内置对象和宿主对象
本地对象为array obj regexp等可以new实例化
内置对象为gload Math 等不可以实例化的
宿主为浏览器自带的document,window 等
19.document load 和document ready的区别
Document.onload 是在结构和样式加载完才执行js
Document.ready原生种没有这个方法,jquery中有 $().ready(function)
20.==和===的不同
==只要求值相等,===要求值和类型都相等,若是引用类型的数据(对象、数组、函数),不是比较它们的值是否相等,而是比较它们是否指向同一个对象;
==用于一般比较,===用于严格比较;
==在比较的时候可以转换数据类型,===严格比较,不会转换数据类型,只要类型不匹配就返回flase。
例如:
null == undefined // true
var a={name:1}
var b={name:1}
a == b // false
a === b // false
注:建议尽量不要使用相等运算符。
if判断,括号中的不是null、' '、undefined才会执行。
21.javascript的同源策略
一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合
22.Javascript支持的转换方式:
eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
23.js工作原理
JavaScript就是所谓的客户端脚本语言,是一种在互联网浏览器内部运行的计算机编程语言。 也就是说,如果一个网页里有js代码,那么,在打开这个网页的时候,js代码就会被自动下载到我们的浏览器里。它是在本地执行的程序,这样可以减少服务端得压力。浏览器也称为Web客户端,因为它连接到Web服务器上,以下载页面。
24.跨域
同源: URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
跨域(不同源)解决方案:
(1)iframe
(2)ajax改成jsonp请求,拿不到返回
(3)Proxy使用代理方式跨域更加直接,可以用nginx或者前端配置
25.JSON对象与JSON字符串相互转换
(1)jQuery插件支持的转换方式:
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
(2)浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。
26.DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
(1)创建新节点
createDocumentFragment() //创建一个DOM片段
createElement_x_x() //创建一个具体的元素
createTextNode() //创建一个文本节点
(2)添加、移除、替换、插入
appendChild()
removeChild()
replaceChild()
insertBefore()
(3)查找
getElementsByTagName() //通过标签名称
getElementsByName() //通过元素的Name属性的值
getElementById() //通过元素Id,唯一性
getElementByClassName() //通过class查找
(4)复制节点
cloneNode() 方法,用于复制节点, 接受一个布尔值参数, true 表示深复制(复制节点及其所有子节点), false 表示浅复制(复制节点本身,不复制子节点)
27.谈谈 innerHTML、nodeValue 与 textContent 之间的区别
innerHTML 属性读取或设置节点起始和结束标签中的 HTML 内容;
nodeValue 属性读取或设置指定节点的文本内容,适用于文本类型的节点;
textContent 属性读取或设置指定节点的文本内容,对于元素节点而言,会返回所包含的所有子节点中的文本内容的组合。
28.DOM 操作中,如何获取元素的属性值?
对于元素节点,获取其某属性的值有多种方式,如下所示:
(1)element.attributes[下标].value
(2)element.attributes['属性名'].value
(3)element.getAttributeNode('属性名').value
(4)element.getAttribute('属性名')
29.简述 window 对象除 document 以外的一些常用子对象,并描述其作用?
window 对象有很多子对象,除了 document 以外,还有如下常用子对象:
screen 对象:此对象包含有关客户端显示屏幕的信息,常用于获取屏幕的分辨率和色彩;
history 对象:此对象包含用户(在浏览器窗口中)访问过的 URL;
location 对象:此对象包含有关当前 URL 的信息,常用于获取和改变当前浏览的网址;
navigator 对象:此对象包含有关浏览器的信息,常用于获取客户端浏览器和操作系统信息;
event 对象:任何事件触发后将会产生一个 event 对象,该对象记录事件发生时的鼠标位置、键盘按键状态和触发对象等信息。
30.js事件流
(1)事件捕获阶段 (2)处于目标阶段 (3)事件冒泡阶段
详解:对JS事件流的深入理解 - 知乎
31.解释一下jQuery的$符
美元符号$只是”jQuery”的别名,它是jQuery的选择器,当然你也可以用jQuery来代替$。jQuery中就是通过这个美元符号来实现各种灵活的DOM元素选择的,例如$(“#main”)即选中id为main的元素。
32.body中的onload()函数和jQuery中的document.ready()有什么区别?
onload()和document.ready()的区别有以下两点:
1、我们可以在页面中使用多个document.ready(),但只能使用一次onload()。
2、document.ready()函数在页面DOM元素加载完以后就会被调用,而onload()函数则要在所有的关联资源(包括图像、音频)加载完毕后才会调用。
33.jQuery中有哪几种类型的选择器?
有3种类型的选择器,如下:
1、基本选择器:直接根据id、css类名、元素名返回匹配的dom元素。
2、层次选择器:也叫做路径选择器,可以根据路径层次来选择相应的DOM元素。
3、过滤选择器:在前面的基础上过滤相关条件,得到匹配的dom元素。
34.当CDN上的jQuery文件不可用时,该怎么办?
为了节省带宽和脚本引用的稳定性,我们会使用CDN上的jQuery文件,例如google的jquery cdn服务。但是如果这些CDN上的jQuery服务不可用,我们还可以通过以下代码来切换到本地服务器的jQuery版本:
<script type="text/javascript" language="Javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.4.1.min.js "></script>
<script type='text/javascript'>
//<![CDATA[
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/Script/jquery-1.4.1.min.js'
type='text/javascript' %3E%3C/script%3E"));
}
//]]>
</script>
35.jQuery中的Delegate()函数有什么作用?
delegate()会在以下两个情况下使用到:
1、如果你有一个父元素,需要给其下的子元素添加事件,这时你可以使用delegate()了,代码如下:
<script>
$("ul").delegate("li", "click", function(){
$(this).hide();
});
</script>
2、当元素在当前页面中不可用时,可以使用delegate()
36.Jquery源码整体架构你知道么?能说多少?