热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

淘宝网前端开发面试题(二)JS面试题

 所有答案仅供参考,不负责答案对错(^_^)1.js是什么,js和 html的开发如何结合?js是javascript的缩写,是一种基于对象的、事件驱动的脚本语言。它一共由三个部分

 

所有答案仅供参考,不负责答案对错(^_^)

1.js 是什么,js 和 html 的开发如何结合?

jsJavascript的缩写,是一种基于对象的、事件驱动的脚本语言。它一共由三个部分组成:分别是DOMBOMECMAscript
HTML 是超文本标记语言。HTML里的每一个标签就是JS里面的DOM节点。JS操作DOM节点就是在操作HTML的标签

2.怎样添加、删除、复制、创建和查找节点?

添加节点:appendChild()

删除节点:removeChild()

复制节点:cloneNode()

创建元素:createElemen()

查找节点:getElementById()、getElementsByTagName()、getElementsByName()

3.怎样使用事件?IE 和 DOM 事件模型之间存在哪些主要差别?

怎样使用事件:

1).直接在DOM元素上绑定事件处理器

2).FF等浏览器遵循W3C标准来制定浏览器事件模型,使用addEventListenerremoveEventListener两个函数

3).IE自己的事件模型,但主要是通过attachEventdetachEvent两个函数来实现的。

主要差别:

DOM事件模型

使用addEventListenerremoveEventListener两个函数:

window.addEventListener(load,function(){},false);

document.body.addEventListener(keypress,function{},false);

obj.addEventListener(mouseover,MV,true);

function MV(){}

addEventListener带有三个参数,第一个参数是事件类型,就是我们熟知的那些事件名字去掉前面的’on’,第二个参数是处理函数,可以直接给函数字面量或者函数名,第三个参数是boolean值,表示事件是否支持Capturing

W3C的事件模型优点是BubblingCapturing都支持,并且可以在一个DOM元素上绑定多个事件处理器,各自并不会冲突。并且在处理函数内部,this关键字仍然可以使用只想被绑定的DOM元素。另外function参数列表的第一个位置(不管是否显示调用),都永远是event对象的引用。

至于它的缺点,很不幸的就只有在市场份额最大的IE浏览器下不可使用这一点。

IE事件模型

IE自己的事件模型跟W3C的类似,但主要是通过attachEventdetachEvent两个函数来实现的:

window.attachEvent(onload,function(){});

document.body.attachEvent(onkeypress,myKeyHandler);

可以发现它跟W3C的区别是没有第三个参数,而且第一个表示事件类型的参数也必须把’on’给加上。这种方式的优点就是能绑定多个事件处理函数在同一个DOM元素上。

至于它的缺点,首先IE浏览器本身只支持Bubbling不支持Capturing;而且在事件处理的function内部this关键字也无法使用,因为this永远都只想window object这个全局对象。要想得到event对象必须通过window.event方式,最后一点,在别的浏览器中,它显然是无法工作的。

最后推荐两个必须知道的IEW3C标准的区别用法—

1)、当我们需要阻止浏览器某DOM元素的默认行为的时候在W3C下调用e.preventDefault(),而在IE下则通过window.event.returnValuefalse来实现。

2)、当我们要阻止事件冒泡的时候,在W3C标准里调用e.stopPropagation(),而在IE下通过设置window.event.cancelBubble=true来实现。

4.面向对象编程:b 怎么继承 a?

function A{

  this.say=function{alert("Javascript");}

}

function B{}

B.prototype=new A();

Var C= new B();

C.say();

5.看看下面 alert 的结果是什么?

view sourceprint?1.function b(x, y, a) {

.arguments[2] = 10;

.alert(a);

}

b(1, 2, 3);//输出10

 

如果凼数体改成下面,结果又会是什么?

a = 10;

alert(arguments[2] );//输出10

 

6. 请编写一个 Javascript 凼数 parseQueryString,它的用途是把 URL 参数解析为一个对象

var obj = parseQueryString(url);

alert(obj.key0) // 输出 0

 

 1  function parseQueryString(url) {
 2      var pos;
 3      var obj = {};
 4      if (pos = url.indexOf("?") != -1) {
 5          var urlstring = url.substring(pos + 1, url.lenght - 1);
 6          var urlArr = urlstring.split("&");
 7          var keyValue = [];
 8          for (var i = 0; i ) {
 9              keyValue = urlArr[i].split("=");
10              obj[keyValue[0]] = keyValue[1];
11          }
12      }
13      return obj;
14  }
15  var objUrl = parseQueryString(url);

 

7.ajax 是什么?   ajax 的交互模型? 同步和异步的区别? 如何解决跨域问题?

AJAX 指异步JavascriptXMLAsynchronous Javascript And XML),是一种无须刷新整个页面就能为页面中的某一部分加载数据的技术。

交互模式:交互模型就是Ajax在浏览器端引入一个执行引擎,它一边应付user的请求,一边把某些必须交给服务器处理的东西传送给服务器,同时把结果准备好,展现给user的技术模式

同步:脚本会停留并等待服务器发送回复然后再继续

异步:脚本不停留并处理可能的回复

解决跨域问题:

a.Web服务器上的代理文件

b.利用JSONP:在页面中添加一个元素,由该元素来从其他服务器加载JSON数据,这种方式之所以有效是因为元素的脚本没有受到限制(目前我只接触使用到这一种)

c.跨来源资源共享

8.什么是闭包?下面这个 ul,如何点击每一列的时候 alert 其 index?

  • 这是第一条
  • 这是第二条
  • 这是第三条

 1 function a() {
 2      var ul = document.getElementById("test");
 3      var li = ul.getElementsByTagName("li");
 4      for (var i = 0; i ) {
 5          (function (_i) {
 6              li[_i].Onclick= function () {
 7                  alert(_i);
 8              }
 9          })(i);
10      }
11  }

9.说说 YSlow

YSlow是由Yahoo开发者团队发布的一款基于Firebug的插件。而Firebug 又是一款基于FireFox的插件。所以说YSlow是一款基于FireFox插件的插件。

微软的IE系列浏览器不能使用YSlow。YSlow只能使用在FireFox浏览器上。如果要想使用YSlow,那么你必须先安装FireFox并且安装FireFox上的Firebug插件。

推荐博客:http://lusongsong.com/reed/362.html


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
author-avatar
haijiaoxu_512
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有