笔试
一:CSS选择器权重计算规则
1.第一等:代表内嵌样式;如:style=" ",权重值为1000.
2.第二等:代表ID选择器;如:#content,权重值为0100.
3.第三等:代表类,伪类和属性选择器;如:.content,权重值为0010.
4.第四等:代表元素和伪元素选择器;如:div p,权重值为0001.
5.第五等:代表通配符,子元素选择器和相邻兄弟选择器等;如:*、>、+,权重值为0000.
6.继承的样式没有权重值.
7.!important;
!important的作用是提升优先级,换句话说,加了这句的样式的优先级是最高的(比内嵌的优先级还高)。
以前从没考虑过属性,这次考到了属性的权值
二.js对象的属性名可以是什么值,对象属性的值可以是什么值?
属性名就是普通的变量命名方式,属性值可以是字符串,数字,等各种内容。
三.margin属性值
如果是三个值的话表示,上,左右,下。
四.ECMA对象的数据属性和访问器属性
4.1ECMAscript的数据属性
configurable表示,属性是否能通过delete删除,默认值是true;
enumerable表示,属性是否能用for in 遍历,默认值是true;
writable表示能否修改属性值,默认值是true;
value默认值是undefined。
可以用Object.defineProperty(person,"name",{});来定义对象属性的数据属性
注意:(1)一旦把属性定为不可配置的,就不能把它变成可配置了,此时,再调用Object.defineProperty();方法修改除writable之外的特性,都会导致错误。
(2)如果调用了这个方法,则除了value之外的数据属性都是都是false。
(3)直接定义在对象上的属性,configurable和enumerable值都是true,这个注意点是要优先于(2)的。
(4)IE8是第一个实现这个方法的浏览器版本。
4.2ECMAscript的访问器属性
configurable
enumerable
get
set
代码实现链接,内有代码验证链接。
五.属性遍历的一些操作
1对象名.hasOwnProperty(name),遍历对象上非原型链上的属性
2for in,遍历整个原型链上enumerable是true的属性
3自定义方法,遍历原型上的属性,hasPrototypeProperty(对象名)(如果实例中重写了,会被覆盖,遍历不到)
4Object.getOwnPropertyNames(对象名,name),属性遍历,包括不可枚举的属性
可以得出规律:
obj.hasOwnProperty,hasPrototypeProperty<for in <Object.getOwnPrototypeNames()
//定义hasPrototypeProperty方法
function hasPrototypeProperty(obj,name){
if(!obj.hasOwnProperty(name)&&(name in obj)) return true;
else return false;
}
function Person(){
this.name = "zhangsan";
this.sex = "nv";
}
var person = new Person();
Person.prototype.age = "12";
for(var i in person){//2.遍历整个原型链上可枚举的属性
console.log(person[i]);//输出zhangsan nv 12
}
console.log(person.hasOwnProperty("name"));//1.只包含非原型的
console.log(hasPrototypeProperty(person,"age"));//3.只包括原型上的,如果实例中属性覆盖则,返回false
person.age = "13";
console.log(hasPrototypeProperty(person,"age"));//输出false
Object.defineProperty(person,"age",{enumerablle:false})
var keys = Object.getOwnPropertyNames(person);//4返回包括不可枚举的属性
console.log(keys);//name,sex,age
六.代码题
1.柯里化函数:把一个需要传入多个参数的函数变成只需要传入一个参数的函数
function add(x,y,z){return x+y+z;}
function add2(x){
return function(y){ return function(z){
return x+y+z;
}}
}
console.log(add(1,2,3));//输出6
console.log(add2(1)(2)(3));//输出6
2.实现(10).add(20).reduce(30).add(2)结果为10+20-30+2=2
Number.prototype.add = function(m){
return this+m;
}
Number.prototype.reduce = function(n){
return this+n;
}
console.log((10).add(20).reduce(3).add(2));
3.js闭包和异步操作的考察
function fn(){
for(var i=0;i<=4;i++){
var tc = setTimeout(function(i,tc){
console.log(i);
clearTimeout(tc);
},i,tc);
}
}
fn();//1,2,3,4
4.js继承机制的考察
function Verhical(w){
this.w = w;
}
Vehical.prototype.getW = function(){
return this.w;
}
function Bicycle(w){this.w = w;}
Bicycle.prototype = _____;//new Vehical(),new Vehical(2),new Vehical(4)都可以,括号里是什么没关系
var bicycle = new Bicycle(2);
console.log(bicycle.getW());//输出为2
一面
1.首先问项目,简单介绍一下自己做的项目
2.之后是介绍一下浮动,如何清除浮动
3.水平排列3个div,两边的定宽,如何让中间的随着两边的自适应在页面中间。
4.position定位的概念,position的几个取值,以及代表的含义。
5.h5新增的元素。.
6.localstorage和sessionstorage,cookie的区别,三者的过期时间?
7.js可以直接访问cookie么?如何禁止js访问cookie?
可以,用document.cookie
禁止的话用http-only,设置为false,js就不能访问cookie了。
8.http协议和tcp协议的区别,以及三次握手,四次挥手。
9.快速排序的思想
未完待续
欢迎大家留言补充