由于空余时间不少..因此博客更新频率得相对频繁些..javascript
考察原型以及原型链:前端
var object = {} object.__proto__ === Object.prototype // 为 true var fn = function(){} fn.__proto__ === Function.prototype // 为 true fn.__proto__.__proto__ === Object.prototype // 为 true var array = [] array.__proto__ === Array.prototype // 为 true array.__proto__.__proto__ === Object.prototype // 为 true Function.__proto__ === Function.prototype // 为 true Array.__proto__ === Function.prototype // 为 true Object.__proto__ === Function.prototype // 为 true true.__proto__ === Boolean.prototype // 为 true Function.prototype.__proto__ === Object.prototype // 为 true
考察 this:java
function fn(){ console.log(this) } new fn()
new fn() 会执行 fn,并打印出 this,请问这个 this 有哪些属性?这个 this 的原型有哪些属性?数据库
this 自身没有属性(只有一个隐藏的 proto 属性)
this 的原型是 fn.prototype,只有一个属性 constructor,且 constructor === fn(另外还有一个隐藏属性 proto,指向 Object.prototype)编程
考察JSONjson
JSON 和 JavaScript 是什么关系?
JSON 和 JavaScript 的区别有哪些?promise
JSON 是在某一些方面借鉴了JavaScript的一种轻量级的数据交换格式,是一门新语言。mvc
除了 JavaScript 基本数据类型中的 undefined 、symbol,复杂类型中的 function,其余的数据类型在 JSON 中都有。函数
JSON 中的字符串必须用双引号括起,JavaScript 中字符串单双引号均可以;fetch
JSON 中没有变量,因此不能引用,JavaScript中有变量,能够引用;
JSON 中没有原型链,JavaScript有原型链;
前端 MVC 是什么?
请用代码大概说明 MVC 三个对象分别有哪些重要属性和方法。
MVC 是一种代码组织形式,他把代码依据功能的不一样划分红三个部分,分别是Model、Controller、View。
View表明视图
Model表明对数据的操做(存储和获取等)
Controller表明了View和Model二者之间的交互逻辑以及其余。
他们之间的相互做用是这样的:
用户对View视图作出了操做,监听着View视图的controller接收到了View的变化通知,而后按需求去调用Model,Model向server发出请求;server返回响应给Model,Model返回数据给Controller,Controller根据接收到的数据更新View视图。
View 主要接受一个选择器,获取须要监听的区域,而后返回一个对象给 controller 操做、更新:
window.View = function(selector){ return this.document.querySelector(selector) }
Model 主要负责数据库的初始化、数据的存储和获取,因此他的重要属性应该要要有 init 、fetch 、save:
window.Model = function(options){ //经过传入参数获取须要操做数据库 var resourceName = options.resourceName return { //初始化数据库 init:function(){}, //获取数据: fetch:function(){}, //保存数据 save:function(){} } }
Controller 负责监听和更新 view,调用 model ,接受操做 model 返回的数据,因此他要有一个 init 接收传入的 view 和 model ,负责 model 的调用 和 执行绑定事件函数 bindEvents():
window.Controller = function(options){ var init = options.init var object = { view:null, model:null, init:function(view,model){ this.view = view this.model = model this.model.init() init.call(this,view,model) this.bindEvents.call(this) }, } //经过遍历传入的参数 加入函数到object 中,处理其它事务 for(let key in options){ if(key !== "init"){ object[key]=options[key] } } return object }
考察面向对象编程:
function Human(id,hp){ this.id = id this.hp = hp } Human.prototype = { constructor:Human, walk:function(){ /**/ } , species:function(){ /**/ } , useTools:function(){ /**/ } , }
考察 Promise 的用法:
用过 Promise 吗?举例说明。
有,在使用 leanCloud 数据库的时候,我经过调用一个 leanCloud 的 API :fetch 函数获取数据库的数据,这个函数被调用后,返回一个 Promise 对象;这个 Promise 对象有一个 then 属性,他接受两个回调函数做为参数,一旦数据获取成功(resolve),则把数据传入 then 后的第一个函数,对数据进行相对操做;若是数据获取失败(reject),则执行第二个函数。
若是要你建立一个返回 Promise 对象的函数,你会怎么写?举例说明。
function promise(){ return new Promise((resolve,reject) => { console.log('this\'s Promise begin') resolve(10) }) } promise().then((value)=>{ console.log(value) console.log('that\'s Promise end') })