今天笔试某动游戏公司
先说下考点先
1. 盒子模型
MDN对盒子模型的描述
每个盒子具有四个边界
- 内容边界content
- 内边距边界padding
- 边框边界boder
- 外边框边界margin
2. CSS优先级
MDN关于CSS优先级
选择器类型的优先级是递增的。
一直没搞懂什么是内联样式,外联样式,现在一次性弄懂吧。
内联样式
style="font-weight:bold"
总会覆盖外部样式表的任何样式 ,因此可看作是具有最高的优先级。.
外联样式
使用外部 CSS 文件。
嵌套样式
在HTML文档头部 区域使用
概括
内联>外联>嵌套
3. li之间的空白
这题翻查一下资料发现自己错第二次了感觉不应该啊
原因
浏览器的默认行为是把inline元素间的空白字符(空格换行tab)渲染成一个空格
解决办法
- 浮动
- 改成同一行
- letter-spacing,父子元素皆要设置
4. 清除浮动
老生常谈的问题:
- 伪类元素、空元素加clear:both
- 父元素伪类元素zoom:1
- 父元素定高度
- 父元素overflow:hidden
- 父元素跟着浮动
- 父元素overflow:auto
- 父元素display:table
之前没记住这么多啊,今晚睡觉前记一记吧
5. 深克隆对象
这是网上搜到挺有意思的方法
下方代码来源
var clone = function(obj){
if(obj === null) return null;
if(obj.constructor !== 'object') return obj;
if(obj.constructor === Date) return new Date(obj);
if(obj.constructor === RegExp) return new RegExp(obj);
var newObj = new obj.constructor(); //保持继承的原型
for(var key in obj){
if(obj.hasOwnProperty(key)){
var val = obj[key];
newObj[key] = typeof val === 'object' ? arguments.callee(val):val;
}
}
return newObj;
}
这里主要是考虑了null,object之类的如何处理,因为经过Parse和Stringify之后会忽略掉这些。
7. 跨域
这个在上次CVTE的时候背下来的…
具体实现的话就jsonp可能比较熟悉了
1、 通过jsonp跨域
2、 document.domain + iframe跨域
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
6、 跨域资源共享(CORS)
7、 nginx代理跨域
8、 nodejs中间件代理跨域
9、 WebSocket协议跨域
8. 前端性能优化
这个就很多方法了,我感觉写得还是不够多
- 减少http请求
- 合理缓存
- 压缩合并资源
- CSS雪碧图
- 懒加载
- 等等等
考输出结果的
function Foo(){
getName = function(){console.log(1)};
return this;
}
Foo.getName = function (){console.log(2)}
var getName = function(){console.log(4)}
function getName(){console.log(5)}
- Foo.getName()
- getName()
- Foo().getName()
- getName()
- new Foo.getName()
每次做这种题都很慌,总想着找一堆题来做来训练加深理解。
function a(xx){
this.x = xx;
return this;
}
var x = a(5);
var y = a(6);
- console.log(x.x);
- console.log(y.x);