Javascript常见问题

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源码整体架构你知道么?能说多少?


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值