【前端面试指南】JS-2-原型和原型链

  1. 如何准确判断一个变量是不是数组 ?

  2. 手写一个简易的jQuery,考虑插件和扩展性

  3. class的原型本质怎么理解?

  4. class 和继承

    1. constructor
    2. 属性
    3. 方法
  5. 不用class如何实现继承?

    // 使用函数实现 Animal 类
    function Animal () {
        this.a = 1 // 有一个属性 a
    }
    // 有一个原型方法 move
    Animal.prototype.move = function () { }
    
    // 使用函数实现 Dog 类,继承了 Animal 类
    function Dog () {
        Animal.apply(this, arguments)
        this.d = 1
    }
    // 让 Dog 的原型继承 Animal 的原型
    let f = function () { }
    f.prototype = Animal.prototype
    Dog.prototype = new f()
    // 修改constructor
    Dog.prototype.constructor = Dog
     
    Dog.say = function () { }
    
  6. 使用class如何实现继承

    class Dog extends Animal{
        constructor(){
            super()
        }
    }
    
  7. 类型判断 instanceof

[] instanceof Array // true 
[] instanceof Object // true
{} instanceof Object // true
  1. 原型和原型链

    1. 原型

      1. 每个 class 都有显式原型 prototype
      2. 每个实例都有隐式原型 _proto_
      3. 实例的 _proto_ 指向对应 class 的prototype
    2. 基于原型的执行规则,获取属性 xialuo.name 或 执行方法 xialuo.sayhi( ) 时

      1. 先在自身属性和方法寻找
      2. 如果找不到则自动去隐式原型 __proto__ 中查找
    3. 原型链

      1. Child.prototype.proto === Parent.prototype

        1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值