1、JavaScript:window.onload操作
//JavaScript:window.onload操作 function first() { alert('first'); } function second() { alert('second'); } window.onload = first; window.onload = second; //只会执行第二个window.onload; //不过可以通过以下方法来进行改进: window.onload = function(){ first(); second(); }
2、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
str = "hello"; var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; console.log(reg.test(str));
3、写出几种this的应用
function Car(color,brand){ this.color = color; this.brand = brand; } <input type="button" onclick="show(this);" value="点击一下" /> var btn = document.getElementById("Example"); btn.addEventListener("click", function () { console.log(this.innerHTML); }, false);
4、typeof用法举例
var a; //undefined var a = -1.9; //number var a = "-1.9"; //string var a = function () { }; //function var a = true; //boolean var a = new Array(); //object var a = {}; //object var a = null; //object 可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。
5、函数参数
function add(a,b,c,d){ console.log(arguments.length); return a+b+c+d; } console.log(add.length); console.log(add(1,1)); console.log(add(1,1,1,1,1)); 以上代码控制台分别输出:4,2,NaN,5,4 Arguments对象的length属性是实际传递给函数的参数个数,可以比申明的参数个数多,也可以比申明的参数个数少。 Function对象的length属性是在定义函数时声明已命名的参数的个数(a,b,c,d)。
6、JavaScript是一种基于对象的语言,JavaScript中可以使用哪几种对象
Javascript对象总的来分可以分为三大类:
①内部对象
Js中的内部对象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。
其中Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。
②宿主对象
宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。
浏览器对象有很多,如Window和Document等等。
③自定义对象
顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充
7、闭包如何理解?举个栗子?
简单地说:当一个函数返回它内部定义的一个函数时,就产生了一个闭包。 function closure() { var count = 0; var get = function () { count++; return count; }; return get; } var a = closure(); var b = closure(); console.log(a()); //1 console.log(a()); //2 console.log(b()); //1 以上代码生成两个闭包实例,在内存中生成了相互独立的副本,它们内部引用的count变量分别属于各自的运行环境。
8、解释call, apply的用法?
1)apply 语法:function.apply(thisobj, args) 参数:thisobj (调用function的对象,在函数主体中,thisobj是关键字this的值) args (一个数组,它的元素是要传递给函数function的参数值) 描述:apply()将指定的函数function作为对象thisobj的方法来调用,传递给它的是存放在数组args中的参数,返回的是调用function的返回值。在函数体内,关键字this引用thisobj对象。 参数args必须是数组或Arguments对象。如果想单独指定传递给函数的参数,而不是指定数组元素,则使用Function.call()方法。 2)call obj1.method1.call(obj2,argument1,argument2) 如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入. 两个方法用法一样,区别是参数不同。当参数明确时可用call, 当参数不明确时可用apply给合arguments。
案例用call、apply可以实现多继承: function Add() { this.showAdd = function (a, b) { alert(a + b); } } function Sub() { this.showSub = function (a, b) { alert(a - b); } } function Example() { Add.call(this); Sub.apply(this); } var e = new Example(1, 2); e.showAdd(1, 1); //2 e.showSub(1, 1); //0
9、跨域解决方案?
a、document.domain+iframe的设置
b、动态创建script
c、利用iframe和location.hash
d、利用flash
10、POST和GET的区别?
a. 根据HTTP规范,GET用于从服务器上获取信息,POST是向服务器传送数据,表示可能修改变服务器上的资源的请求。
b. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
c. 对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。
d. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
e. GET安全性非常低,POST安全性较高。但是执行效率却比POST方法好。
11、浏览器渲染操作的顺序?
(1) 解析HTML结构。 (2) 加载外部脚本和样式表文件。 (3) 解析并执行脚本代码。 (4) 构造HTML DOM模型。 (5) 加载图片等外部文件。 (6) 页面加载完毕。 load事件必须等到网页中所有内容全部加载完毕之后才被执行。如果一个页面中包含了大容量的多媒体文件,则就会出现这种情况:网页文档已经呈现出来,但由于网页数据还没有完全加载完毕,导致load事件不能够即时被触发。