flash中的事件处理分哪几个过程? Event对象的target和currentTarget有什么区别?
js中的event对象包含很多有用的信息
target:触发事件的元素。
currentTarget:事件绑定的元素。
用JavaScript脚本为Array对象添加一个去除重复项的方法
Array.prototype.unique=function () {
if(this.length<=1){
return this.slice(0);
}
var result=[];
for(var i=0;i<this.length;i++){
if(!isExist(result,this[i])){
result.push(this[i]);
}
}
return result;
}
function isExist(result,o) {
if(result.length==0){
return false;
}
var temp;
for(var j=0;j<result.length;j++){
temp=result[j];
if(temp===o){
return true;
}
//NaN
if(!o&&!temp&&temp!=undefined&&o!=undefined&&isNaN(temp)&&isNaN(o)){
return true;
}
}
return false;
}
console.log([false,true,undefined,undefined,null,null,NaN,0,1,{},{},'a','a',NaN].unique());
console.log(null==null);
用javascript写一个图片跑马灯程序,要求图片从右向左无缝移动
轮播图
我们在进行组件开发的时候,精彩会需要用到大量颜色。有两种方法。方法1:预先定义好大量的颜色;方法2:自定义函数,采用随机生成颜色的方式。请采用方法2实现随机颜色汲取。
function renderColour() {
return "#"+ (Math.random()*oxffffff<<0).toString(16);
}
写出至少5个前端优化的方法,并写明理由。
- 将CSS放再顶部 — 能加快页面内容显示,并且能避免页面产生白屏。
- 将JS放在底部 — ①JS会阻塞对其后面内容的呈现;②JS会阻塞对其后面内容的下载。
- 将JS,CSS放在外部文件中(代码和样式的分离)— 便于优化和管理。
- 重置CSS文件 — 清除HTML标签默认的属性,让页面按编写者的意愿变化。
- HTML尽量使用标准规范的写法 — 提高渲染引擎的执行效率。
- 对JS和CSS进行压缩,去重,合并等处理 — ①减小了文件的体积; ②减小了网络传输量和带宽占用; ③减小了服务器的处理的压力; ④提高了页面的渲染显示的速度 。
- 减少页面的图片数目 — 浏览器拉取页面图片的开销是比较大的,而实际上,我们的页面为了提升用户体验使用了大量图片,这里我们常采用cdn存放,图片合并(几个图片合成一个,然后使用css进行截取片断显示),永久cache(存在图片变更的维护成本,工具的建设等),甚至有些效果是可以用css来实现的代替图片 。
有这样一个URL:http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1’, b:’2’, c:”, d:’xxx’, e:undefined}。
function splitUrl(url){
const transUrl=encodeURI(url);
const paramList=transUrl.split('?')[1].split('&');
const newObj={};
paramList.forEach(elem=>{
const itemList=elem.split('=');
newObj[decodeURI(itemList[0])]=decodeURI(itemList[1]);
});
return newObj;
}
编写一个JavaScript函数,输入指定类型的选择器(仅需支持id,class,tagName三种简单CSS选择器,无需兼容组合选择器)可以返回匹配的DOM节点,需考虑浏览器兼容性和性能。 /* @param selector {String} 传入的CSS选择器。* @return {Array}*/ var query = function(selector){ //返回查找到的节点数组return [];}
链接:https://www.nowcoder.com/questionTerminal/bdfb4058d2714a3dbc7e283f0a0381c4
来源:牛客网
function selectQuery(ss){
var arr = [];
if(/^#/.test(ss)){
arr.push(document.getElementById(ss));
}else if(/^\./.test(ss)){
var values = document.getElementsByClassName(ss);
if(values.length != 0){
for(var i=0;i<values.length;i++){
arr.push(values[i]);
}
}
}else{
var values = document.getElementsByTagName(ss);
if(values.length != 0){
for(var i=0;i<values.length;i++){
arr.push(values[i]);
}
}
}
return arr;
}
网页时钟 第一问:使用HTML,CSS绘制一个时钟,效果图和素材如下图(注意指针可以旋转到任意位置)第二问:用Javascript编写一个Clock类,实现如下接口:
- 构造函数Clock(HTMLDomElement dom) :在参数dom中生成上述时钟
- setTime(hour,minute,second) :设置时钟时间,指针指定到正确位置
- run()时钟开始工作 可以使用jQuery等任何前端框架
javascript里面的继承怎么实现,如何避免原型链上面的对象共享
function Cat(name){
Animal.call(this);
this.name = name || 'Tom';
}
(function(){
// 创建一个没有实例方法的类
var Super = function(){};
Super.prototype = Animal.prototype;
//将实例作为子类的原型
Cat.prototype = new Super();
})();
请实现javascript中的indexOf功能,判断一个字符串a中是否包含另一个字符串b。
a)如果包含,需要返回匹配字符串b的位置
b)如果不包含,需要返回-1
如:indexOf(“hello”,”el”) return 1。
链接:https://www.nowcoder.com/questionTerminal/3c733bbf54db46a3b673c9e0390d98c4
来源:牛客网
var indexOf = function(string, target) {
var len = string.length;
var tLen = target.length;
if (len < tLen) {
return -1;
}
if (len === tLen) {
return (string === target) ? 0 : -1;
}
for (var i = 0; i < len; i++) {
if (string.substr(i, tLen) === target) {
return i;
}
}
return -1;
};
写一个函数padstare(string str1,min_length,string str2)。
例:padstare(‘5’,3,‘0’)返回的是‘005’; padstare(‘798’,5,‘0’)返回的是‘798’;
function padstare(str,min,str_char)
{
var ret=[];
if(str.length>=min)
{
return str;
}
else
{
for(var i=0;i<min-str.length;i++)
{
ret.push(str_char);
}
return ret.join('')+str;
}
}
写一个命令行字符的解析函数。
例:-name lily -age 25 -school “chengdu university” 返回的是[-name lily,-age 25, -school “chengdu university”]
function getdata(str)
{
var json={};
var gets =str.split('"')[0];
gets =gets.split(' ');
for(var i=0;i<gets.length-1;i++)
{
if(i%2==0)
{
json[gets[i]]=gets[i+1];
}
}
json[gets[gets.length-1]]=str.split('"')[1];
return json;
}
某饭店要开发一个排队软件。非VIP用户需要排队,先到先得。VIP用户可以插队,但是VIP用户之间需要按到达时间先后排队。
要求实现:①addCustomer(String phoneNumber)函数②有空位时获取排到的用户③用户进店排队时的函数current()