web知识总结
概念
对WEB标准以及W3C的理解与认识
W3C主张结构、样式、行为分离
分别对应html(xhtml)、css、ECMAScript
javascript
什么是原型和原型链
Javascript中,所有数据类型都有一个默认属性:__proto__
,这个叫做原型。而该隐藏属性中又包含其它数据对象的__proto__
,这种原型的嵌套包含就叫原型链。
prototype属性有什么作用
本质上,js中的基本数据类型Functoin/Object/Number/Array/boolean都是函数。(用typeof 可以查看)而prototype是函数的专有属性,当该函数被实例化时,prototype属性可以被实例所继承,即
var fun = function(){};
var a = new fun();
a.__proto__ === fun.prototype; //true
改变作用域的方法
apply
通过传入对象参数改变原函数作用域为参数作用域。fun.apply(obj, [a,b,c]);
调用fun函数,作用域为obj,参数为a/b/c。
call
同上,不过为不定参数。
new
通过实例化,将构造函数this指针指向实例函数。
bind
传入参数可以改变做用域甚至绑定参数
判断数据类型的方法
- toString.call 准确判断数据类型:Array、String、Object、RegExp、Number、Undefined、Null、Date、Boolean、Function
- typeof 粗略判断数据类型:undefined、number、string、boolean、object、function
- instanceOf 判断一个函数是否为另一个函数的实例。
- Array.isArray ECMAScript 5 新增方法,用来判断参数是否为数组。
- isFinite 判断是否为Infinity和null
arguments是什么数据类型
函数内部自动创建的一个类似数组的获取函数实参的隐藏对象。
caller和callee有什么区别
caller
函数原型函数,返回该函数的调用函数。当该函数为顶层调用时,返回nullcallee
arguments的默认属性,arguments.callee
用来指向函数本身,常用在匿名函数和递归函数中。arguments.callee.length
可以用获取函数形参长度。
== 和 === 有什么区别
- ‘1’ == 1 –> true
- ‘1’ === 1 –> false
- null == undefined –> true
- null === undefined –> false
- NaN == NaN –> false
- NaN === NaN –> false
- var a = b = {}; a === b –>true
- var a = {}; var b = {}; a === b –> false
==
先将两边值转换为同一类型的对象再进行===
比较===
只用于浅拷贝的对象进行比较,不进行对象内容进行比较。只要引用地址不一致,即使内容一致也比较不出来。可以用来比较函数、数组等复杂对象,只是实用性不大。
什么是变量提升
变量在一个范围内声明的时候,javascript引擎会将这个声明移到范围顶部。
var v='Hello World';
(function(){
console.log(v);
var v='I love you';
})();//undefined
这段代码等价于
var v='Hello World';
(function(){
var v;
console.log(v);
v='I love you';
})();
同样,匿名函数也受命名提升的影响
(function(){
foo();
function foo(){
console.log("我来自 foo");
}
})(); //我来自 foo
(function(){
foo();
var foo = function(){
console.log("我来自 foo");
}
})();//TypeError: foo is not a function
js中有函数作用域但是没有块级作用域。
var x = 1;
console.log(x); // 1
if (true) {
var x = 2;
console.log(x); //2
}
console.log(x);// 2
css
浏览器兼容性问题解决方法
css hack
样式文件
通用 height: 100px;
IE6 : _height: 100px;
IE7 : +height: 100px;
IE6、IE7 : height: 100px;
IE7、FF : height: 100px !important;
引用注释
除IE外都可识别
css3常用属性
border-radius
圆角属性
box-shadow
用来制作阴影、模糊效果、以及内边框
background-size
设置背景图片大小
transition
制作简单动画,通过改变特定属性
transform
样式变换,缩放、旋转、平移
清除浮动的方法
clear:both
浮动元素后建立空元素来清除浮动。非IE浏览器常用before和after伪类来实现。
overflow:auto
空标签元素清除浮动而不得不增加无意代码的弊端,,使用zoom:1用于兼容IE
工具
chrome调试工具
ctrl+shift+f
搜索所有文件内容,速度很慢,不建议使用
ctrl+p 或 ctrl+o
按文件名全量搜索文件
ctrl+shift+p 或 ctrl+shift+o
在当前打开的js文件中搜索函数名称
ctrl+shift+o 或 ctrl+shift+o
在当前打开的css文件中按选择器搜索定义的样式