美文网首页
面试精简语

面试精简语

作者: 輪徊傷 | 来源:发表于2019-07-01 11:41 被阅读0次

原型链

在JavaScript中万物都是对象,对象和对象之间也有关系,并不是孤立存在的。对象之间的继承关系,在JavaScript中是通过prototype对象指向原型,再通过proto指向Object对象原型为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。

  • 在原型上定义的属性和方法,创建出来的实例也会拥有原型上的属性和方法
  • 实例上有属性就用实例的属性,实例上没有就去找原型上的属性,原型上没有就去找原型的原型(原型链终极)上的属性

四、预编译

  • JS运行三部曲:
    • 1、语法分析
    • 2、预编译
    • 3、解释执行代码
  • 简单总结:变量声明提升,函数声明整体提升
  • 具体:
    • 1、创建一个AO对象(Activation Object)执行期上下文
    • 2、寻找形参和变量声明作为AO对象属性名,值为undefined
    • 3、将实参与形参统一
    • 4、在函数体中寻找函数声明,值为函数体、

js5的this指向

第一种:方法调用 this指向这个方法的对象

var age = 38;
var obj = {
    age: 18,
    getAge: function() {
        console.log(this.age);
    }
};
obj.getAge(); 
//这个this指向obj
--------------------------------------------------
// 变式:
var fn = obj.getAge;
fn();
 //这个this指向window,因为这个把方法赋值给这个变量了

第二种:函数调用,里面的this指向的是window
第三种:构造函数调用:this指向调用它的对象
第四种:上下文调用模式,this指向谁?指向的是传入的对象
相同点
都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。
例如:
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
不同点
apply:最多只能有两个参数——新this对象和一个数组argArray。(简单地说就是第二个参数传的是数组)
call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。(简单地说就是第一个参数后传的都是参数)

new 关键字的作用

1、在构造函数里面创建一个对象obj
2、将函数里面的this指向创建的那个对象obj
3、执行构造函数方法,属性和方法被添加到this引用的对象中
4、返回这个obj对象

5.闭包

概念:闭包就是有权访另一个函数作用域中变量的函数
产生:当内部函数保存到外部时,就会产生闭包
形式:比如一个a函数中return一个函数,在return得这个函数中使用a函数中的变量,
缺陷:因为变量在被使用所以无法被垃圾回收机制回收

函数继承

继承

ES5的继承

1、构造函数实现继承,有个缺点,不能继承原型

    function Parent(){
             this.name = "parent"
        }
    Parent.prototype.aa=function(){}
    function Child(){
         Parent.call(this)
         this.type ="child"
    }
    console.log(new Child())

2、借助原型是实现继承,child修改值得时候,Parent new出来的对象的值也会被修改

    function Parent(){
        this.name = "parent"
        this.arr = [1,2,3]
    }
    function Child(){
        this.type = "child"
    }
    Child.prototype = new Parent()
    var A = new Child()
    var B = new Child()
        
    A.arr.push(4)
    console.log(A,B)

3、组合方式实现继承

function Parent(){
    this.name = "parent"
    this.arr = [1,2,3]
}
function Child(){
    Parent.call(this)
    this.type = "child"
}
Child.prototype = Object.create(Parent.prototype)
//因为把原型
Child.prototype.construcotr = Child
var A = new Child()
var B = new Child()

A.arr.push(4)
console.log(A,B)

ES6的继承

class People{
        constructor(name,age){
             this.name = name
             this.age = age
        }
    eat(){
    }
}
class Student extends People{
    constructor(id,name,age){
        super(name,age)
        this.id = id
    }
}

从输入URL到页面展示的过程

相关文章

  • 面试精简语

    原型链 在JavaScript中万物都是对象,对象和对象之间也有关系,并不是孤立存在的。对象之间的继承关系,在Ja...

  • 公司架构

    不养闲人,组织精简,人员少,不要让人都忙于制度,每个人都是多面手 拒绝加班文化,收取面试费,把好关,面试方面,面试...

  • Vue文档

    vue教程精简版 2019前端面试题 Vue管理后台框架选择推荐

  • iOS 高频面试题

    面试题速测,Objective-C 精简版,题目链接,知乎上一套题这套题比较常用,涵盖面可以、内容也精简,题目链接...

  • 一些Android面试题目(一)

    个人搜集的一下Android面试的题目 解析部分,尽量弄成在面试中回答的模式吧,把重点挑出来,尽量精简回答。 最后...

  • 精简精简精简

    五色令人目盲;五音令人耳聋;五味令人口爽;驰骋畋猎,令人心发狂;难得之货令人行妨。是以圣人为腹不为目,故去彼取此。...

  • Javascript面试必看(精简版)

    1. javascript的typeof返回哪些数据类型. 答:string,boolean,number,und...

  • vue面试必看(精简版)

    1.vue优点? 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb 简单易学:国人开发,中文文...

  • 做了6年Android开发,跟我一起手写EventBus吧,An

    阿里面试 自我介绍 首先要介绍自己的项目经验和个人的擅长点,因为面试官主要考察你的表达能力和语言精简能力。 简历的...

  • 精简、精简、再精简

    努力,方式方法很重要。 有经验的学习者会有一套自己行之有效的策略,不用走很多弯路。 这类人多数都是学霸,他们的办法...

网友评论

      本文标题:面试精简语

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