很直接!就是考察最近学习了没?学到了点啥?若是没学还真很差糊弄。javascript
享受代码运行成功时的成就感。css
参考连接html
喜欢用Mac、sublime、chrome等。html5
参考连接java
参考连接node
参考连接jquery
参考连接css3
语义化一句话来归纳就是使用正确的标签作正确的事。在没有css样式的状况下,也能使网站层次清晰可读。语义化的好处之一是还利于网站的SEO。git
参考连接github
我真的喜欢两个空格缩进。“它是惟一一种在全部浏览器里显示一致的缩进方式。”
Chrome Web Developer Tools
HTML5
网页经过标准定制机构定制统一标准才能更好的发展。
IE下css文件中使用@import带来的Flash of Unstyled Content。使LINK标签将样式表放在文档HEAD中。
用来讲明使用的HTML是什么版本。
盒模式的解析。
强制规定本来灵活的HTML语言来遵循XML的严格规范,明显与时代发展相悖。
HTML5新增的能够用来统一存放数据的属性,还能用来存放JSON格式。
Geolocation/Web Socket/Canvas/Video/HTML5 forms/Web Workers
抹平不一样浏览器初始化样式。推荐normalize.css
浮动会使节点脱离文档流。
overflow:hidden
:内容不担忧被截断时很方便。将多个小图标统一排列到一张图片再使用background-position来选取以减小HTTP请求数。
.header{ text-indent: 100%; overflow: hidden; white-space: nowrap; }
略。
略。
bootstrap。
Media query
参考连接
为打印媒体添加打印样式。
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
or
@media print{ div{ /**/ } }
优势:变量、mixin、大量插件。 缺点:上手速度。
可以使用@font-face,不支持的浏览器尽可能使用图片。
从选择器最右边开始一层层解析并判断。
盒模型包括margin/border/padding/content。CSS3中使用box-sizing:
利用事件冒泡到父节点,再查找事件源event.target
是哪一个子节点。
对象中的this指向当前对象,函数中的this始终指向当前做用域的上下文(上下文能够被修改)。
当查找对象的属性时,首先在该对象自己查找,不然追溯到其原型去找,直到查找到Object.prototye为止。
名值对组成的对象或JSON数据格式。
function foo(){ }();
函数声明不能直接被调用。须要用括号包裹或者前面加操做符使其变为函数表达式。
参考连接
他们都表示空值,并且 null == undefined,可是属于不一样的基本数据类型。
闭包可让外部做用域使用内部做用域的变量。当外部做用域执行完毕后,内存也不会被释放。这是JS强大功能的一面。
arr.forEach(function(value, index){})
利用IIFE和闭包的概念,返回内部程序接口供外部使用。既不污染全局变量,又能导入外部引用对象。
宿主对象是指DOM(document)和BOM(window)。原生对象是Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、Math等对象。
function Person(){} var person = Person(); var person = new Person();
上面的this指针指向window对象,下面的this指向新生成对象,最后该对象赋给person。
.call
和 .apply
的区别是什么?接受的参数形式不一样:call接受参数列表形式,apply接受数组/类数组形式。
fn.call(context, 1, 2, 3) fn.apply(context, [1, 2, 3]) fn.apply(context, arguments)
Function.prototype.bind
的做用?扩展函数原型,使全部函数都新增bind方法,该方法能够绑定该函数执行上下文后返回一个新函数。
刚开始写就会注意优化。
当查找对象的属性时,首先在该对象自己查找,不然追溯到其原型去找,直到查找到Object.prototye为止。
document.write()
?大多数生成的广告代码依旧使用 document.write()
,虽然这种用法会让人很不爽。几乎不用。
特性检测更适合针对实现了特定特性的浏览器进行操做。UA字符串因为被浏览器厂商能够随意修改所以不太靠谱。
XMLHttpRequest对象,方法有open
、get
、send
等。
参考连接
参见连接
一种跨域方法,让远程服务器把接受到的参数做为方法名包裹查询的数据后返回,在本地调用该方法。JSONP没用到XMLHttpRequest对象。
了解Mustache。使用过UnderscoreJS自带模版。
做用域内全部变量声明都被提到顶部,被提高的变量初始值为undefined,执行到所在行时才真正赋值。
IE支持事件冒泡,Netscape支持事件捕获,W3C创建先捕获-后冒泡机制。
扩展内置对象会形成混乱。
虽然会强壮JS的原生功能,但仍是不是好作法。
ready事件监听DOM树的加载完成时间,先于onload的页面全部内容加载完毕时间。
=== 不会作隐式类型转换
浏览器的安全策略,限制了不一样域名甚至不一样端口的js文件的交互方式。
类式继承:参考连接
function Person(name){ this.name = name } Person.prototype.sleep = function(){ console.log(this.name + ' is sleeping.') } function Student(name){ Person.apply(this, arguments) } Student.prototype = new Person() var lilei = new Student('li lei') lilei.sleep()
原型继承:参考连接
function Person(){} Person.prototype.sleep = function(){ console.log(this.name + ' is sleeping') } function inherit(o){ var F = function(){} F.prototype = o return new F } function Student(name){ this.name = name } Student.prototype = inherit(Person.prototype) var lilei = new Student('lilei') lilei.sleep()
[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]
方法一
Array.prototype.duplicator = function(){ return this.concat(this) }
函数也是对象,所以考虑将部分计算结果用键值对方式缓存到该函数对象上,下次直接查找该计算的键值。
根据一个判断结果的true和false的不一样而获得两种不一样的返回值。
略。
好处是使JS在严格模式下运行,减小bug。坏处是有些对象使用时会报错,如arguments.callee等。
函数返回自身,供链式调用
$(ele).click().show().animate().hide()
一句话解释:能够随时调用一个异步函数的返回值。
返回对jQuery引用对象形成“破坏性”操做以前的DOM节点。
能够选择挂在jQuery对象下面,好处是能够减小使用全局变量。
// 1. dom ready $(function(){ }) // 2. selector $('a.close-btn') // 3. create node $('<div />') // 4. wrapp nodeList $(document.getElementsByTagName('div'))
.queue()
方法的使用。
.get()
返回的是原生DOM节点,.get()
与[]
返回的是原生DOM节点,.get()
不传参数还能够返回包裹的原生数组对象。参考连接
.eq()
返回的是jQuery对象。参考连接
.on()
,将上面三者的优势全盘接收。.bind()
方法用于绑定事件,事件绑定在该节点上。该方法还能用来绑定自定义事件。.live()
方法还能用于给未来添加到页面里的节点也能绑定事件。事件绑定在document上。.delegate()
方法使用了事件委托机制,也达到了.live()
的效果。事件绑定在了节点的父节点上。.on()
方法改造了.delegate()
使用方法,还将.bind()
的绑定自定义事件的功能收入囊中。$.fn是jQuery对象的原型缩写,扩展$.fn能够为全部jQuery对象添加原型方法。
$(".foo div#bar:eq(0)")
$('.foo').find('#bar').first() // $('#bar')不就是想要的吗?
~~3.14
答案:3
"i'm a lasagna hog".split("").reverse().join("");
答案:"goh angasal a m'i"
( window.foo || ( window.foo = "bar" ) );
答案:"bar" 只有 window.foo 为假时的才是上面答案,不然就是它自己的值。
var foo = "Hello"; (function() { var bar = " World"; alert(foo + bar); })(); alert(foo + bar);
答案: "Hello World" 和 ReferenceError: bar is not defined
var foo = []; foo.push(1); foo.push(2);
答案:2
var foo = {}; foo.bar = 'hello';
答案: undefined
没有。
Google Developer Tools
Github
IE的各类bug。