1.Js如何实现继承?
js通过构造函数来实现继承,因为js没有类。
//创建一个Dog的构造函数, 构造函数大写开头。
function Dog() {
}
// 通过注入prototype属性,来实现对象需要共享的属性和方法
Dog.prototype.call = function() {
alert("汪")
}
//New 后面跟着构造函数
var dog1 = new Dog()
2.浏览器缓存
具体的内容太多了,推荐一篇文章讲的很棒
浅谈浏览器http的缓存机制
3.margin重叠的现象,如何解决?
上下相邻的普通元素,上下margin边距取其中较大的边距值。
比如:
div.top {
margin-bottom: 30px;
}
div.bottom {
margin-top: 30px;
}
// 此时它们之间还是只有30px。
- 元素使用padding
- 元素设置成inline-block
- 元素加float:left;
其他就不清楚了...
4.解释下浮动和它的工作原理?清除浮动的技巧
浮动元素脱离文档流,不占据空间。
1.使用空标签清除浮动,定义css clear:both. 问题增加了无意义标签。
2.浮动元素的父标签添加css属性overflow:auto; zoom:1; zoom:1用于兼容IE6。
3.使用after伪对象清除浮动。代码如下
.clearfix {
zoom: 1;
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
5.利用函数编程思想写一个add(1)(1,2,3)()
利用函数编程的惰性求值, 下面是我写的
function add() {
//把arguments转成array对象
var _args = Array.prototype.slice.apply(arguments);
return function() {
if ( arguments.length > 0 ) {
var newArgs = Array.prototype.slice.apply(arguments);
_args = _args.concat(newArgs);
return add.apply(null, _args)
}
return _args.reduce(function(a, b) {
return a + b;
})
}
}
var a = add(1,2,3)(2)