Web前端开发笔试题(Javascript篇)
判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;
reg.test("a1a__a1a__a1a__a1a__");
截取字符串abcdefg的efg
var str = "abcdefg";
if (/efg/.test(str)) {
var efg = str.substr(str.indexOf("efg"), 3);
alert(efg);
}
判断一个字符串中出现次数最多的字符,统计这个次数
//将字符串的字符保存在一个hash table中,key是字符,value是这个字符出现的次数
var str = "abcdefgaddda";
var obj = {};
for (var i = 0, l = str.length; i < l; i++) {
var key = str[i];
if (typeof obj[key] == 'undefined') {
obj[key] = 1;
} else {
obj[key]++;
}
}
/*遍历这个hash table,获取value最大的key和value*/
var max = -1;
var max_key = "";
var key;
for (key in obj) {
if (max < obj[key]) {
max = obj[key];
max_key = key;
}
}
alert("max:"+max+" max_key:"+max_key);
IE与FF脚本兼容性问题
(1) window.event:
表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象
(2) 获取事件源
IE用srcElement获取事件源,而FF用target获取事件源
(3) 添加,去除事件
IE:element.attachEvent(“onclick”, function) element.detachEvent(“onclick”, function)
FF:element.addEventListener(“click”, function, true) element.removeEventListener(“click”, function, true)
(4) 获取标签的自定义属性
IE:p1.value或p1[“value”]
FF:可用p1.getAttribute(“value”)
(5) document.getElementByName()和document.all[name]
IE;document.getElementByName()和document.all[name]均不能获取p元素
FF:可以
(6) input.type的属性
IE:input.type只读
FF:input.type可读写
(7) innerText textContent outerHTML
IE:支持innerText, outerHTML
FF:支持textContent
(8) 是否可用id代替HTML元素
IE:可以用id来代替HTML元素
FF:不可以
这里只列出了常见的,还有不少,就不一一列出了….
规避javascript多人开发函数重名问题
(1) 可以开发前规定命名规范,根据不同开发人员开发的功能在函数前加前缀
(2) 将每个开发人员的函数封装到类中,调用的时候就调用类的函数,即使函数重名只要类名不重复就ok
javascript面向对象中继承实现
//javascript面向对象中的继承实现一般都使用到了构造函数和Prototype原型链,简单的代码如下:
//(1)对象继承方法
Function Animal(name) {
This.nme = name;
}
Animal.prototype.getName = function() {alert(this.name)}
Var Dog = new Animal(“Buddy”);
//(1) 方法继承方法
function Animal(name) {
this.name = name;
}
Animal.prototype.getName = function() {alert(this.name)}
function Dog() {};
Dog.prototype = new Animal("Buddy");
Dog.prototype.constructor = Dog;
var dog = new Dog();
FF下面实现outerHTML
FF不支持outerHTML,要实现outerHTML还需要特殊处理
思路如下:
在页面中添加一个新的元素A,克隆一份需要获取outerHTML的元素,将这个元素append到新的A中,然后获取A的.innerHTML就可以了,
Web前端开发笔试题(Javascript篇)
。
sdfshdfklsjdafklsajdf;lajk;dfjklsjdfk
编写一个方法 求一个字符串的字节长度
/*假设:
一个英文字符占用一个字节
一个中文字符占用两个字节*/
(function getByte(str) {
var num = 0;
for (var i = 0, l = str.length; i < l; i++) {
if (str.charCodeAt(i) > 255) {
num += 2;
} else {
num++;
}
}
alert(num);
})("你好,John!")
编写一个方法 去掉一个数组的重复元素
Array.prototype.unique = function() {
var ret = [];
var o = {};
for(var i=0, len=this.length; i
if(!o[this[i]]){
ret.push(this[i]);
o[this[i]] = this[i];
}
}
return ret;
}
var arr = [1,2,3,1,1,3,3,4,5,6,5,5,5,5,7,8,9,10,9,9,9];
var unique = arr.unique();
console.log(unique); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
获取一个数组中的重复项
var arr = [1,2,3,1,1,3,3,4,5,6,5,5,5,5,7,8,9,10,9,9,9];
Array.prototype.delete = function() {
var arr = this;
var obj = {};
var delArr = [];
for (var i = 0, l=arr.length; i < l;)
{
var key = arr[i];
if (typeof obj[key] == 'undefined')
{
obj[key] = "1";
i++;
continue;
}
delArr.push(arr.splice(i, 1)[0]);
var l = arr.length;
}
return delArr;
}
var delArr = arr.delete();//[1, 1, 3, 3, 5, 5, 5, 5, 9, 9, 9]
写出3个使用this的典型应用
//(1)在html元素事件属性中使用,如
//(2)构造函数
function Animal(name, color) {
This.name = name;
this.color = color;
}
//(3)
Var btn = document.getElementById(“text”);
Btn.onclick = function() {
Alert(this.value); //此处的this是按钮元素
}
//(4)CSS expression表达式中使用this关键字
p element
如何显示/隐藏一个DOM元素?
Ele.style.display =””;
Ele.style.display =”none”;
Ele是要操作的DOM元素
JavaScript中如何检测一个变量是一个String类型?请写出函数实现
/*Str有两种生成方式:
(1)Var str = “hello world”;
(2)Var str2 = new String(“hello world”);*/
function isString(str)
{if (typeof str == “string” || str.constructor == String) {
return true;
}
Return false;
}
网页中实现一个计算当年还剩多少时间的倒数计时程序,要求网页上实时动态显示“××年还剩××天××时××分××秒”
补充代码,是鼠标单击后Button1到Button2的后面
function addAfterButton2(obj) {
var clone = obj.cloneNode(true);
var parent = obj.parentNode;
parent.appendChild(clone);
parent.removeChild(obj);
}
JavaScript有哪几种数据类型
简单:Number,Boolean,String,Null,Undefined
复合:Object,Array,Function
下面css标签在JavaScript中调用应如何拼写,border-left-color,-moz-viewport
borderLeftColor
mozViewport
JavaScript中如何对一个对象进行深度clone
深度clone
function Object.prototype.cloneAll(){
function clonePrototype() {
clonePrototype.prototype = this;
var obj = new clonePrototype();
for(var ele in obj) {
if(typeof(obj[ele]) == 'object') obj[ele] = obj[ele].cloneAll();
}
return obj;
}
}
浅度clone
var obj = new Object();
obj.name = "zjl";
Object.prototype.getName = function() {alert(this.name);}
Object.prototype.cloneDeep = function() {
var clone = {};
for (var key in this) {
clone[key] = this[key];
}
return clone;
}
console.log(obj);
var clone = obj.cloneDeep()
console.log(clone);
如何控制alert中的换行
\n alert(“p\np”);
请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)