创建对象的方式
(1)使用new关键字
var start = new Object;
(2)使用花括号
var start = {};
创建类
ES6之前使用function关键字模拟:function Person(){};
ES6中类的创建方式:class Person{}
异步传输实现方式:
(1)ajax
(2)iframe(加上target)实现
JavaScript 中应该用 "" 还是 "="
绝大多数场合应该使用 === ,只有检测 null/undefined 的时候可以使用 x == null
javascript的typeof返回哪些数据类型
Object number function boolean underfind
例举3种强制类型转换和2种隐式类型转换?
强制(parseInt,parseFloat,number)
隐式(== – ===)
split() join() 的区别
前者是切割成数组的形式,后者是将数组转换成字符串
数组方法pop() push() unshift() shift()
Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除
slice
(1)slice() 方法可从已有的数组中返回选定的元素。
(2)slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
注意: slice() 方法不会改变原始数组。
sort
sort() 方法用于对数组的元素进行排序。按字母顺序值排序;
call和apply的区别
apply:应用某一对象的一个方法,用另一个对象替换当前对象。
call:调用一个对象的一个方法,以另一个对象替换当前对象。
apply:最多只能有两个参数——新this对象和一个数组 argArray。
call:则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
apply和call功能一样,只是传入的参数列表形式不同:
apply的写法:func.apply(func1,[var1,var2,var3])
call的写法:func.call(func1,var1,var2,var3)
substring和substr的区别
var v1 = 'Hello World';
//如果只是写一个参数,两者的作用都是一样的:就是截取字符串当前下标以后直到字符串最后的字符串片段。
console.log(v1.substring(1)); //ello World
console.log(v1.substr(1)); //ello World
console.log('**********************************');
// 当写第二个参数的时候,两者就会有完全不同的含义;
// substring(a,b)
// 第二个参数是截取到字符串最终的下标(实际截取位置是1-7)
console.log(v1.substring(1,8)); //ello Wo
// substr(a,b)
// 第二个参数是截取字符串的长度(实际截取8个字符长度值)
console.log(v1.substr(1,8)); //ello Wor
事件委托是什么
利用事件冒泡的原理,自己所触发的事件,让他的父元素代替执行!
Javascript的事件流模型都有什么?
(1).冒泡型事件:指事件按照从最精确的对象到最不精确的对象的顺序逐一触发
(2).捕获型事件:它与冒泡型事件相反,指事件按照从最不精确到最精确的对象的顺序逐一触发
JS对象与JSON格式的互相转换
①JSON的解析(json数据转换成JS对象):
var myObject=JSON.parse(myJSONtext);
②JSON的序列化(JS对象转换成JSON数据):
var myJSONtext=JSON.stringify(myObject);
**列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个 **
对象:Window location screen history navigator
方法:Alert() confirm() prompt() open() close() setinterval() settimeout()
documen.write和 innerHTML 的区别?
document.write 只能重绘整个页面;innerHTML 可以重绘页面的一部分
闭包是什么,有什么特性,对页面有什么影响
闭包就是能够读取其他函数内部的局部变量的函数,或者定义在一个函数内部的函数。
闭包的好处:
(1)不增加额外的全局变量;
(2)执行过程中所有变量都在匿名函数内部
闭包的坏处:
(1)内存消耗大,会影响网页的性能
(2)会改变父函数内部变量的值
如何阻止事件冒泡和默认事件
阻止事件冒泡:w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true;
阻止默认事件:w3c的方法是e.preventDefault(),IE则是使用return false;
浏览器渲染页面的过程
1、用户输入URL地址
2、浏览器解析URL解析出主机名
3、浏览器将主机名转换成服务器ip地址(浏览器先查找本地DNS缓存列表 没有的话 再向浏览器默认的DNS服务器发送查询请求 同时缓存)
4、浏览器将端口号从URL中解析出来
5、浏览器建立一条与目标Web服务器的TCP连接(5、6、7三次握手)
6、浏览器向服务器发送一条HTTP请求报文
7、服务器向浏览器返回一条HTTP响应报文
8、关闭连接 浏览器解析文档
HTTP状态码知道哪些?
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
Javascript异步编程的4种方法
一、回调函数
二、事件监听
三、发布/订阅
四、Promises对象
http://www.ruanyifeng.com/blog/2012/12/asynchronous_javascript.html
JS的原型和原型链
(1)原型和原型链是JS实现继承的一种模型;
(2)原型链的形成依靠 ** **proto ** **而不是prototype
(3)在js中每一个对象都可以看成是一个原型对象,通过proto可以把所有原型对象串联成一条原型链;
cookies、localStorage、sessionStorage的理解
localStorage:长期存储数据。浏览器关闭不丢失;
sessionStorage:存储的数据在浏览器关闭后删除;
cookies:保存的数据在浏览器和服务器之间传递,数据是加密的;存储数据大小是4k;
localStorage、sessionStorage保存的数据在本地,存储数据大小是5M;
作用域
指对某一属性(变量)或者方法(函数)具有访问权限的代码空间,在JS中作用域在函数中进行维护;
this在js中(当前对象)是一个依赖于使用它的执行环境中被解析的关键字;
input输入框提示信息
<input type="text" placeholder="请输入信息"/>
<input type="text"