常见经典面试内容整理

如何提高网页加载速度

  1. 减少HTTP请求  网站建设中过多的图片,CSS、script、flash,会增加内容加载的请求负担,所以,建议您减少这类元素的使用。使用CSS合并图片,避免出现直接插入原图。

  2. 使用Gzip压缩文档:GZIP编码是用来改进网页性能的方法,不仅可以减小存储空间,还可以减少传输所需的时间。将网站中的文件使用Gzip压缩后,可以显著的增加网页加载速度,同时也可以降低网站的带宽流量消耗。
  3. 设置合理的过期时间    尽可能减小Cookie体积,能够很好的提高网页内容加载效率;对静态组件的Cookie读取是一种资源的浪费。
  4. 减少图片体积    建议大家可以考虑将GIF转为PNG,同时您可以在CSS Sprites中竖直并尽量将颜色相似的图片紧凑的排列在一起可以有效的减小图片本身的大小,从而提高网站页面图片显示速度。
  5. 样式表文件放在外部调用:    把页面中需要用到的JavaScript和CSS样式表文件放在另外的文件夹中,这样一来在打开网站其它页面时就会缓存这些调用的文件,从而加快网站页面的加载速度。
  6. 减少域名DNS查找时间:    用户在浏览器的地址栏中键入域名后,浏览器就会通过DNS系统查找域名对应的IP地址,所以需要将DNS的时间设置在较低的水平,比如平均60-100毫秒进行一次DNS查询。

JavaScript数据类型分那几种? 

  1. Number 数字类型

  2. String 字符串类型

  3. Boolean 布尔类型

  4. Function 函数

  5. Object 对象

  6. Null

  7. Undefined 没有定义类型

写过jquery插件吗?都写过哪些?
 对原型了解多少  js怎么实现一个类的继承 

1.原型链继承(将父的原型对象赋值给子的原型对象,再将子的constructor属性的指针重新指向子的构造函数)
function Animal() {
this.feeling = 'happy';
}
function Dog(name, variety) {
this.name = name;
this.variety = variety;
}
Dog.prototype = new Animal();//Animal实例对象就是Dog原型对象(Animal实例对象的prototype属性指向Animal的原型对象)
Dog.prototype.constructor = Dog;//给Dog原型对象的constructor属性的指针重新指向构造函数Dog
var dog = new Dog('二狗', '哈士奇');
print(dog.feeling); // happy

缺点:

a、当父包含引用类型属性时,该属性会被所有实例对象共享,示例代码如下:

function Animal() {
this.colors = ['red', 'green', 'blue'];
}
function Dog() {
}
// 继承Animal
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;

var dog1 = new Dog();
dog1.colors.push('black');
print(dog1.colors); // red,green,blue,black

var dog2 = new Dog();
print(dog2.colors); // red,green,blue,black

b、不能在不影响所有实例对象的情况下,向父级构造函数传递参数

2.构造函数继承
function Dog(name, variety) {
Animal.apply(this, arguments);
this.name = name;
this.variety = variety;
}

var dog = new Dog('二狗', '哈士奇');
print(dog.feeling); // happy

使用apply或者call方法改变构造函数作用域,将父函数的构造函数绑定到子对象上。虽然解决了子对象向父对象传递参数的目的,但是借助构造函数,方法都在构造函数中定义,函数的复用就无从谈起

3.构造函数和原型链组合继承

function Animal(name) {
this.name = name;
this.colors = ['red', 'green', 'blue'];
}
Animal.prototype.sayName = function() {
print(this.name);
};
function Dog(name, age) {
// 继承属性
Animal.call(this, name);
this.age = age;
}
// 继承方法
Dog.prototype = new Animal();
Dog.prototype.constructor = Dog;
Dog.prototype.sayAge = function() {
print(this.age);
}

var dog1 = new Dog('二狗', 1);
dog1.colors.push('black');
print(dog1.colors); // red,green,blue,black
dog1.sayName(); // 二狗
dog1.sayAge(); // 1

var dog2 = new Dog('二牛', 2);
print(dog2.colors); // red,green,blue
dog2.sayName(); // 二牛
dog2.sayAge(); // 2
实现div元素水平居中和垂直居中的几种方法 
 跨域的get方法和post方法怎么实现 
 bind()、live()、delegate()、on()的区别
怎么实现跨域
 解释一下闭包?闭包是怎么形成的?
 == 和 === 的区别
 你对回流、重绘怎么看
了解响应式设计吗
ajax原理
ajax的优缺点
常见浏览器兼容问题
js的异步编程几种方法
模块化

 

原文地址:https://www.cnblogs.com/miss-radish/p/4535054.html