前端面试题(基础) js-2

142 阅读3分钟

#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 的调用模式