#1.JavaScript有哪些方法定义对象?
字面量的对象:
var obj ={}
构造函数:
var obj = new object()
object.create():var obj = object.create(object.prototype)
#2.常见的兼容的问题
png24位的图片在ie6上出现背景,解决方式是改为png8
浏览器的默认的margin和padding是不同的,需要加一个*{margin:0;padding:0}
IE下,event对象有x,y属性,但是没有pageX,pageY属性
Firefox下,event对象有pageX,pageY属性,但是没有x,y属性
#3.说说你对promise的理解
promise有四种状态:
pending:初始的状态
fulfilled:成功的操作
rejected: 失败的操作
settled:promise 以被fulfilled或rejected,
promise用来延迟deferde和async的计算
promise的构造函数
var promise = new Promise(function(resolve, reject) {
if (...) { // succeed
resolve(result);
} else { // fails
reject(Error(errMessage));
}
});
promise用then 的方法,使用方法为
promise.then(onFulfilled, onRejected)
接受两个函数作为参数,一个在fulfilled被调用,另一个在rejected被调用,
接受参数是future,onFulfilled对应与reslove ,onRejected对应reject
#4.vue,react,angular
vue.js是一个精简的mvvm,用于创建web的交互界面的库,通过双向数据的绑定来吧view和model来连接起来,实际的dom的封装和输出格式都被抽象为Directives 和 Filters
react是Facebook推出的一个构建UI的库,能够实现服务端的渲染,使用了virtual dom ,性能很好
angularjs 是比较完善的MVVM的框架,包含双向数据绑定,模块化,路由等功能
#5.node的应用场景
特点:
是一个js运行环境
事件驱动
非阻塞I/O
单线程,单进程
基于Chrome v8引擎
优点:
高并发
缺点:
支持单核,
可靠性低,
#6.js的基本的数据类型
undefined
null
Boolean
string
number
#7.web开发中的会话跟踪的方法?
cookie
session
ip地址
url重写
隐藏input
#8.js的内置对象?
object是所有对象中的父对象
数据封装类对象:object,array,number,string,Boolean
其他的对象: Function、Arguments、Math、Date、RegExp、Error
#9.json的了解
json是一种轻量化的数据交换的格式 他是基于JavaScript的一个子集,数据格式简单,易于读写,占用的带宽小
json字符串转换为json 对象
var obj =eval('('+ str +')');
var obj = str.parseJSON();
var obj = JSON.parse(str);
json对象转换为字符串 var last=obj.toJSONString(); var last=JSON.stringify(obj);
#10.同步与异步的区别
同步:浏览器访问服务器请求,页面得到刷新,重新请求,页面再次刷新,内容出现 异步:浏览器访问服务器请求,用户正常操作,浏览器后端请求,请求完,页面不刷新,内容出现
#11.defer和async
defer 并行加载js行为,会按照scripr的标签顺序执行
async 并行加载js行为,下载完成立即执行,不会按照script的标签顺序执行
#12.谈谈严格模式的限制
变量必须声明后才能使用
函数的属性不能有同名的属性,否则会报错
不能使用with语句
禁止this指向全局对象
#13.谈谈你对ES6 的理解
新增模板字符串
箭头函数
解构赋值
for-of(用来遍历数组中的值)
ES6把 promise 对象纳入规范,提供了原生的promis 的对象
增加了 let 和const 对象
增加了块级作用域
引入了module规范
#14.什么是面向对象的编程的思想?
基本思想是通过类,对象,继承,封装,等概念来进行程序的设计
优点
易于维护
采用面对象的思想,可读性高,维护起来方便
易于扩展
缩短了开发的周期
既降低了重复的工作
#15.谈谈函数this的指向
this的指向,函数的定义是确定不了的,只有函数的执行的时候,才能确定this的指向,实际上this的指向取决于调用它的那个对象
概述起来大概有四种调用的方式
方法调用模式
函数调用模式
构造器调用模式
apply/call 的调用模式