1、JavaScript、CSS的浏览器兼容问题
答:JavaScript 事件监听:JS引擎对用户鼠标、键盘、窗口事件等动作的监视进行的操作,也就是针对用户相应的操作进行附加事件。
IE浏览器使用ele.attachEvent("onclick", doSomething2); FF,Opera浏览器使用ele.addEventListener('click',doSomething2,true),true表示采用事件捕获。
2、CSS选择器,怎么设计比较有效率? 例如:id选择器+class选择器 与 class选择器 + id选择器,哪种更有效率?
答:后者,解析从右往左进行
3、事件冒泡和事件捕获机制,哪种先进行?
答:事件冒泡:从事件目标,附件相应事件,直到到达最顶层DOM元素。事件捕获:从最顶层元素开始,附件相应事件,直到到达事件目标。W3C模型中,任何事件发生,先从顶层开始进行事件捕获,直到事件触发了事件源元素,再从事件源元素往上进行事件冒泡,直到到达document。
4、盒模型
答:内容区(content)+ 填充(padding)+ 边框(border)+ 边距(margin)
5、 width指哪部分,能否改变成 内容区+内边距+边框?
答:width指的是内容区content
6、跨域实现方式
7、JavaScript继承
答:继承模式分为:基于原型链的继承、借用构造函数继承、组合继承。
- 基于原型链的继承:
定义:利用原型让一个引用类型继承另一个引用类型的属性和方法。先说明构造函数、原型、实例三者之间的关系:每个构造函数都有一个原型对象,每个原型对象都包含一个指向构造函数的指针,每个实例都拥有一个指向原型对象的内部指针。假如让原型成为另一个原型的实例,那么该原型对象包含一个指向另一个原型的指针,而另一个原型包含指向另一个构造函数。假若另一个原型又是另一个类型的实例,上述关系依然成立,如此层层递进,就构成了实例与原型的链条。
缺点:a)对于包含引用值的原型A,引用值属性对于原型A的实例是一个实例属性。但原型B继承该原型A,原型B成为原型A的一个实例,拥有了引用值属性。该引用值属性对于原型B的实例来说,是一个原型属性;b) 创建子类型的实例时,没办法在不影响所有对象实例的情况下,给超类型的构造函数传递参数。
- 借用构造函数继承:
定义:在子类型构造函数的内部调用父类型的构造函数,通过使用apply()或call()方法,在新创建的对象上执行构造函数
优点:解决了基于原型链继承方法的弊端
缺点:方法都在构造函数中定义,因此函数复用无从谈起
- 组合继承:结合上两种方法,发挥二者之长的一种组合模式,使用原型链实现对原型属性和方法的继承,使用构造函数实现对实例属性的继承。
8、apply实现继承与call的联系与区别
联系:网上查到关于apply和call的定义:这两个方法都能劫持另外一个对象的方法,继承另外一个对象的属性.
xxxFunction.apply(obj,args) 方法接收两个参数
obj:这个对象将代替xxxFunction类里this对象,也即xxxFunction类(函数)里的this不在是指 xxxFunction 本身,而是obj;
args:这个是数组类型的参数,它将作为参数传给Function(args --> arguments)
结果是还是执行 xxxFunction 类方法(函数)的功能,只不过该 xxxFunction 函数以另一个目标对象和一个数组作为参数传递进 xxxFunction 函数,xxxFunction函数里面的 this 是传进的目标对象,二不是 xxxFunction 本身;
call:和apply类似的,只不过是参数列表不一样.
xxxFunction.call(obj,[param1[,param2[,...[,paramN]]]])
obj:这个对象将代替xxxFunction类里this对象,(跟apply中的obj一样);
params:这个是一个参数列表(即逗号隔开的零个或多个参数),不是数组;
结果是还是执行 xxxFunction 类方法(函数)的功能,只不过该 xxxFunction 函数以另一个目标对象和一个参数列表[即用逗号隔开的零或多个参数]作为参数传递进 xxxFunction 函数,xxxFunction函数里面的 this 是传进的目标对象,二不是 xxxFunction 本身;
9、JavaScript基本数据类型
答:Integer、String、Boolean、Null、Undefined、Object
10、!DOCTYPE的作用
答:HTML有多种版本,告知浏览器文档确切使用哪种HTML or XHTML版本,三种DTD,transitional、strict、frameset以及html 5 不使用DTD
11、语义化标签
答:
<Hx> (<h1>, <h2>, <h3>, <h4>, <h5>, <h6>):标题
<p>:段落
<ul><ol><li>:无序列表、有序列表、列表项
<dl><dt><dd>:定义列表、定义标题、定义描述
<q><blockquote><cite>:单行引用、长篇引用、引用地址
<em><strong>:强调、重点强调
<table><caption><thead><tbody><th><tr><td><tfoot>: 表格、首部说明、表格头部、表格主体内容、表格标题、表格行、表格列、表格尾部
<dfn>:对特殊的术语或短语定义
<ins><del>:插入部分(给文本加上下划线)、删除部分(删除线贯穿于文本)
<abbr><acronym>:web页面上的简称、取首字母缩写
alt属性为不能显示图像、窗体或applets的用户代理(UA),指定替换文字。替换文字的语言由lang属性指定。
title属性用来为元素提供额外说明信息title属性可以用在除了base,basefont,head,html,meta,param,script和title之外的所有标签。但是并不是必须的。12、清除浮动的方式
答:有三种方式清楚浮动:
使用空标签清除浮动,该标签的css属性为clear:both;
使用overflow属性,需要清楚浮动的元素上赋予css属性overflow:auto;
使用after伪对象清楚浮动,#layout:after{display:block;clear:both;content:”";visibility:hidden;height:0;}
13、为多个按钮绑定click事件,同时触发
<html>
<head>
<title></title>
<meta charset="utf-8"></meta>
</head>
<body>
<p></p>
<button id="btn_A">A</button>
<button id="btn_B">B</button>
<button id="btn_C">C</button>
<script type="text/javascript" src="buttonsClick.js"></script>
</body>
</html>
var count = 0;
function doClick (event) {
if(event.target.tagName == "BUTTON") {
++count;
document.getElementsByTagName("p")[0].innerHTML = "按钮点击" + count + "次";
}
}
b.onclick = doClick;