你使用过那些Javascript库?
jQuery ExtJS
你是否研究过你所使用的JS库或者框架的源代码?
正在研究中、、、、、再说
什么是哈希表?
类比数组,数组是编程上的哈希表,哈希表是一种数据结构,关键点就是用一个key值来取对应数据,就像数组的下标。
'undefined'变量和'undeclared'变量分别指什么?
'undefined'是未定义,在jQuery源码中第一行就是,在变量没有赋值的时候的值即为undefined。underclared即为被污染的命名,当使用变量时,没有用var关键字,这时候,定义的变量会在window命名空间被访问到。
闭包是什么,如何使用它,为什么要使用它?
函数数再定义一个函数,用于返回里面的值,
闭包与设计模式
请举出一个匿名函数的典型用例?
请解释什么是Javascript的模块模式,并举出实用实例。
我们在做radf库的时候,把所有的函数写在var function = radf(){}里,为的是在全局作用域下,只有一个radf对象,所有的属性和方法全在radf命名空间下面。这样就是一个无污染的环境。
你如何组织自己的代码?是使用模块模式,还是使用经典继承的方法?
在模块模式中使用继承。例如我们的库中有pannel布局型组件和data型组件,其余都依照这两个基本组件继承而来。
请指出Javascript宿主对象和内置对象的区别?
浏览器环境就是一个宿主,例如ie和ff就是两个不同的宿主环境,里面有一些方法和解释编译的差异性。document、body就是这样的对象。
内置对象就是w3c那个啥组织规定的一些对象,不管任何浏览器都应该有的,例如Array、Object等,当然ie6这种水货很有可能没有。!!!
指出下列代码的区别:
function Person(){} var person = Person() var person = new Person()
1、定义一个函数为Person() 2、定义一个匿名函数指向person 3、实例化一个person、原型来自于函数Person
'.call'和'.apply'的区别是什么?
参数不同。call是给每个argument,.apply是給一个参数组数。
请解释'Funciton.prototype.bind'的作用?
不晓得阿,。1!!
你如何优化自己的代码?
这个就多了,变量能放一起放一起,尽量提前break,能用html的不用css,能用js的不用css、jQuery对象的查找,尽量用#少用.。。一下想不起来了。
你能解释一下JavaScript中的继承是如何工作的吗?
创建了一个实例。这个实例是一个具有__proto__属性的空对象,并且__proto__指向F.prototype
初始化实例。将arguments 和 this赋予函数F。
返回这个实例。
在什么时候你会使用'document.write()'?
不用。。。。。。习惯用alert调试,有自己封装好的MsgBox.
请指出浏览器特性检测,特性推断和浏览器UA字符串嗅探的区别?
。。。奇怪
请尽可能详尽的解释AJAX的工作原理。
非ajax是把要提交的内容放在submit里面,浏览器刷新提交数据。ajax即异步数据刷新,将要提交的数据与服务器接口交换数据,将得到的数据返回用于重组dom元素,以及改变一些页面效果。
请解释JSONP的工作原理,以及它为什么不是真正的AJAX。
动态添加script标签,script是不存在跨域问题的,所以可以跨域以get方式访问异域的数据。要跨域以post方式,需要使用iframe标签。ajax是使用XMLHttpRequest来和服务器进行异步通信,所以原理完全不同。
你使用过JavaScript的模板系统吗?
没有- - 。
请解释变量声明提升。
在中间声明的函数,会提升到最先去声明,但是赋值位置不会提升。
请描述下事件冒泡机制。
点击document中的div ,也会触发到document的click事件,这就是冒泡啦,!如果要停止冒泡,ie下e.returnValue = false。ff下,stop啥的。
"attribute"和"property"的区别是什么?
为什么扩展JavaScript内置对象是个坏做法?
为什么扩展JavaScript内置对象是个好做法?
请指出document load和document ready的区别。(这是个问题的问题)
'=='和'==='有什么不同?
你如何获取浏览器URL中查询字符串中的参数。
请解释一下JavaScript的同源策略。
请解释一下事件代理。
请描述一下JavaScript的继承模式。
如何实现下列代码:
[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]
Array.prototype.duplicator = function(){
var l = this.length,i;
for(i=0;i<l;i++){
this.push(this[i])
}
}
描述一种JavaScript memoization(避免重复运算)的策略。
什么是三元条件语句?
函数的参数元是什么?
什么是"use strict"?使用它的好处和坏处分别是什么?
严格模式会导致出现错误就终止了。 开发时候使用一下可以防bug.