美文网首页
2019-04-16 整理高级JS基础知识

2019-04-16 整理高级JS基础知识

作者: 追夢的蚂蚁 | 来源:发表于2019-05-14 10:59 被阅读0次

第 1 题

填空

var object = {}
object.proto === ????填空1???? // 为 true

var fn = function(){}
fn.proto === ????填空2???? // 为 true
fn.proto.proto === ????填空3???? // 为 true

var array = []
array.proto === ????填空4???? // 为 true
array.proto.proto === ????填空5???? // 为 true

Function.proto === ????填空6???? // 为 true
Array.proto === ????填空7???? // 为 true
Object.proto === ????填空8???? // 为 true

true.proto === ????填空9???? // 为 true

Function.prototype.proto === ????填空10???? // 为 true

答案:

  1. Object.prototype,
  2. Function.prototype,
  3. Object.prototype,
  4. Array.prototype,
  5. Object.prototype,
  6. Funtion.prototype,
  7. Funtion.prototype,
  8. Funtion.prototype,
  9. Boolean.prototype,
  10. Object.prototype

标准答案:

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


第 2 题

function fn(){
console.log(this)
}
new fn()

new fn() 会执行 fn,并打印出 this,请问这个 this 有哪些属性?这个 this 的原型有哪些属性?
答:
this 自身没有属性(只有一个隐藏的 proto 属性)
this 的原型是 fn.prototype,只有一个属性 constructor,且 constructor === fn(另外还有一个隐藏属性 proto,指向 Object.prototype)


第 3 题

JSON 和 JavaScript 是什么关系?
JSON 和 JavaScript 的区别有哪些?
答:
关系:JSON 是一门抄袭/借鉴 JavaScript 的语言,同时也是一种数据交互格式,JSON 是 JavaScript 的子集(或者说 JSON 只抄袭了一部分 JavaScript 语法,而且没有新增任何原创的语法)

区别:JSON 不支持函数、undefined、变量、引用、单引号字符串、对象的key不支持单引号也不支持不加引号、没有内置的 Date、Math、RegExp 等。
而 JavaScript 全都支持。


第 4 题

前端 MVC 是什么?
请用代码大概说明 MVC 三个对象分别有哪些重要属性和方法。

答:
MVC 是什么
MVC 是一种设计模式(或者软件架构),把系统分为三层:Model数据、View视图和Controller控制器。
Model 数据管理,包括数据逻辑、数据请求、数据存储等功能。前端 Model 主要负责 AJAX 请求或者 LocalStorage 存储
View 负责用户界面,前端 View 主要负责 HTML 渲染。
Controller 负责处理 View 的事件,并更新 Model;也负责监听 Model 的变化,并更新 View,Controller 控制其他的所有流程。

代码说明

var model = {
    data: null,
    init(){}
    fetch(){}
    save(){}
    update(){}
    delete(){}
}
view = {
    init() {}
    template: '<h1>hi</h1>'
}
controller = {
    view: null,
    model: null,
    init(view, model){
        this.view = view
        this.model = model
        this.bindEvents()
    }
    render(){
        this.view.querySelector('name').innerText = this.model.data.name
    },
    bindEvents(){}
}

第 5 题

在 ES5 中如何用函数模拟一个类?
答:

ES 5 没有 class 关键字,所以只能使用函数来模拟类。
一、构造函数法

function Cat(name) {
  this.name = name;
}
Cat.prototype.makeSound = function(){alert('miao')}
var cat1 = new Cat('阿毛');

二、Object.create()法

var Cat = {
    name: "大毛",
    makeSound: function(){ alert("喵喵喵"); }
  };
var cat1 = Object.create(Cat);
  alert(cat1.name); // 大毛
  cat1.makeSound(); // 喵喵喵

三、极简主义法

  var Cat = {
    createNew: function(){
      var cat = {};
      cat.name = "大毛";
      cat.makeSound = function(){ alert("喵喵喵"); };
      return cat;
    }
  };
  var cat1 = Cat.createNew();
  cat1.makeSound(); // 喵喵喵

第 6 题

用过 Promise 吗?举例说明。
如果要你创建一个返回 Promise 对象的函数,你会怎么写?举例说明。

答:
用过 Promise,比如 jQuery 或者 axios 的 AJAX 功能,都返回的是 Promise 对象。

$.ajax({url:'/xxx', method:'get'}).then(success1, error1).then(success2, error2)

如果我自己创建 Promise 对象,我会这么写

function asyncMethod(){
    return new Promise(function (resolve, reject){
        setTimeout(function(){
            成功则调用 resolve
            失败则调用 reject
        },3000)
    })
}

相关文章

  • 2019-04-16 整理高级JS基础知识

    第 1 题 填空 var object = {}object.proto === ????填空1???? //...

  • JS高级基础知识考试

    1.new Fn() 会执行 Fn,并打印出 this,请问这个 this 有哪些属性?这个 this 的原型有哪...

  • JS高级基础知识总结

    填空题: 答案: new fn() 会执行 fn,并打印出 this,请问这个 this 有哪些属性?这个 thi...

  • 前端JS基础六(DOM)

    前面我写了JS基础知识,接下来要开始写JS-WEB-API JS基础知识:ECMA 262标准 JS-WEB-AP...

  • javascript基础面试题

    第一章 课程简介 第二章 JS基础知识(上) 第三章 JS基础知识(中) 第四章JS基础知识(下) 第五章 JS-...

  • 最新web前端相关课程学习链接

    js基础篇 js进阶篇 js高级篇 vue基础篇 vue高级篇 react基础 react高级 Nodejs基础 ...

  • 2017.12.11-学习笔记:js进阶知识点整理

    前言:古人云,温故而知新,把自己学习js的进阶笔记整理一下,有错误之处还望指出,谢谢。 →点我去看js基础知识点整...

  • JS原型继承

    本文适合有C++面向对象编程经验的人。声明:本文整理自JS高级编程,我本人没有任何原创性。 JS用蹩脚的方式实现了...

  • 5-1 从基础知识到JSWebAPI

    回顾js基础知识 JS-web-API 总结 回顾js基础知识 变量类型和计算 原型和原型链 闭包与作用域 异步和...

  • vue.js基础知识整理

    1. Vue 实例 1.1 创建一个Vue实例 一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实...

网友评论

      本文标题:2019-04-16 整理高级JS基础知识

      本文链接:https://www.haomeiwen.com/subject/imviwqtx.html