1、第一个为字母,后面是字母数字下划线总长度为5-20 正则:
/^[a-zA-Z]\w{4-19}/
2、怎么规避javascript多人并发函数重命名问题:
根据不同的开发人员实现的功能,在函数名加前缀每个开发人员都把自己的函数封装到类中,然后调用的时候即使函数名相同,但是因为是要类.函数名来调用,所以也减少了重复的可能性
3、javascript如何实现面向对象中的继承
六中继承方式....更新中。。。
4、javascript如何检测一个变量是一个String类型的?请写出函数实现。
function a(obj){ return typeof(obj)=="string";}alert(a(123));alert(a("abc"));
5、javascript有几种数据类型基本数据类型:
Number(数字)String(字符串) null nudefined(未定义) boolean(布尔)引用数据类型:function(函数) object(对象)[Array]数组 Data(时间)RegExp正则 ...
6、AJAX是什么?同步和异步的区别?如何解决跨域问题?
AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。在不重新加载整个网页的情况下,对网页的某部分进行更新。
同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。而异步则这个AJAX代码运行中的时候其他代码一样可以运行。
JQuery的AJAX解决跨域问题:
$(document).ready(function() {
var url='http://localhost:8080/WorkGroupManagment/open/getGroupById" +"?id=1&callback=?';
$.ajax({
url:url,dataType:'jsonp',processData:false,type:'get',success:function(data) {
alert(data.name);
}, error:function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
});
});
JSONP也叫填充式JSON,是应用JSON的一种新方法,只不过是被包含在函数调用中的JSON(如:callback({"name", "chenjun"});)。JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据跨域原理:利用标签没有跨域限制,实现跨域目的
JSONP优缺点:
优点:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行;并且在请求完毕后可以通过调用callback的方式回传结果
缺点:它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JS调用的问题
CORS
CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。
跨域原理:CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败
浏览器支持情况:
Chrome 3+ Firefox 3.5+ Opera 12+ Safari 4+ Internet Explorer 8+
Chrome,Firefox,Opera和Safari都使用XMLHttpRequest2对象。 Internet Explorer使用了类似的XDomainRequest对象,其工作原理和XMLHttpRequest大致相同,但增加了额外的安全预防措施。
CORS优缺点:
优点:支持所有类型的HTTP请求;使用普通的XMLHttpRequest发起请求和获得数据,拥有良好的出错处理
缺点:老式浏览器不支持
7、给出异步加载js方案,不少于两种
8、document.write和 innerHTML的区别?
document.write是直接将内容写入页面的内容刘,会导致页面全部重绘,innerHTML将内容写入某个DOM节点,不会导致页面全部重绘
9、如何添加HTML元素的事件,有几种方法?
1通过HTML元素属性2通过对象属性3.通过W3C监听方式(标准方式)或者IE专属的中间模型添加事件
10、多浏览器检测通过什么?
window.navigator.userAgent这个查询当前浏览器型号版本但是window.userAgent也可以查询到不知道有没有区别
11、如何控制网页在网络传输过程中的数据量?
我一般这样处理:
服务器发送数据块前发送数据块长度,然后发送数据
客户端先读取这个长度,然后按这个长度接收数据。
什么面向对象:
mvc这种框架有什么好处?
会让项目可维护性高,所有涉及界面的代码都在视图(view)中,所有涉及核心逻辑的代码都在模型(Model)里面。URL路由之类的代码都在控制器(Controller)中
预解释:
1、在预解释的时候,不管条件是否成立,都要进行预解释
2、预解释的时候只对等号左边的进行预解释,右边的是值,是不进行预解释的
3、函数体中return下面的代码虽然不在执行了,但是需要进行预解释;return后面的返回的是值,是不进行预解释的;
4、自执行函数的function是不进行预解释的
5、在预解释阶段,如果当前的这个名字已经声明过了,那么下面在遇到就不会在从新的声明了,但是需要重新的赋值;
in:用来检测某一个属性名是否属于这个对象的
this:
->我们一般只研究函数执行的时候里面的this
->this是谁和当前的函数在哪执行和在哪定义没有半毛钱的关系
1)看函数执行的时候,函数名之前是否有".",有的话"."前面是谁this就是谁,没有的话this就是window
2)自执行函数中的this永远是window
3)给元素的某一个事件绑定方法,当事件触发的时候,方法中的this是当前元素本身
4)在构造函数模式中,我们的this.xxx=xxx中的this是当前的类的一个实例
5)call和apply强制改变this的指向->以上所有的this情况在遇到call/apply的时候都不好使,都已强制改变的为主
obj.fn.call(1);//this->1
一般情况下,我们执行call方法第一个传递的参数值是谁,那么fn中的this就是谁
[在非严格模式下]
第一个参数没有传递值、传递的是null、传递的是undefined fn中的this都是window
[严格模式下]
第一个参数传递的是谁this就是谁,传递null/undefined,fn中的this都是对应的null/undefined,不传递值默认也是undefined
6)定时器的this永远是window
浏览器的内存分为两类:
堆内存:引用数据类型开辟的那个存储空间(用来存储对象的键值对和函数的代码字符串的) ->存储仓库
栈内存:就是我们的作用域(全局作用域/私有的作用域)->执行环境
[栈内存的释放]
全局作用域,在浏览器加载页面的时候形成,只有在浏览器关闭页面的时候才能释放->"全局作用域属于不销毁的作用域"
立即销毁的私有作用域:一般情况下,函数执行完成后,当前形成的这个私有的作用域,就没有用了,为了提高性能,浏览器会自动的把它释放掉
不销毁的私有作用域:函数执行形成一个私有的作用域A,但是A中的某一部分内容被A以外的东西(变量)给占用了,那么A这个作用域就不能销毁了
一个函数执行,形成一个私有的作用域A,A中返回一个引用的数据类型值(函数、对象、数组...),并且被外面的一个变量接收了,此时A这个作用域就不能释放了
闭包:
闭包是一种"机制":函数执行形成私有的作用域(不管销毁还是不销毁),保护了里面的私有变量不受外界的干扰
单例模式:
起到了一个分组的作用->把描述同一件事物的属性和方法放在同一个"命名空间"下,避免了全局变量过多使用造成的冲突
每一个对象都是一个单独的实例,里面的属性都是自己私有的属性,不同实例之间互不影响
JS中的异步编程:定时器、所有的事件绑定都是异步编程、回调函数也可以理解为异步编程、AJAX中也可以设置异步编程
网友评论