2021年3月- 杭州-阿里阿里妈妈事业群-电话面面试题

阿里妈妈事业群-电话面

判断是不是数组

Array.isArray(a)

a instanceof Array

a.constructor === Array

oBject.prototype.toString.call(a) === '[object Array]'

你提到instanceof就聊一聊instanceof

Instanceof 用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

例如在表达式 left instanceof right 中 会沿着 left 的原型链查找看是否存在 right 的 prototype 对象

left.__proto__.__proto__... =?= right.prototype

那就说一说原型链

每一个构造函数都有一个prototype属性,指向了它的原型

每一个实例有一个__proto__属性,这个属性指向了它的原型,原型上还有__proto__,指向了它父类的原型,一直到Object.prototype为止,所以Object的原型,是一个对象的终极原型,它的prototype是null

访问实例的一个属性,会从它的实例内部查找,若没有就到它的原型,还没有就继续向父一级原型查找,一直找到Object.prototype位置,没有就返回undefined

在这里插入图片描述

原型链怎么实现继承

假设构造函数 B() 需要继承构造函数 A(),就可以通过将函数 B() 的显式原型指向一个函数 A() 的实例,然后再对 B 的显式原型进行扩展。那么通过函数 B() 创建的实例,既能访问函数 B() 的属性 b,也能访问函数 A() 的属性 a,从而实现了多层继承。

具体例子:

// 定义动物类
function Animal (name) {
    属性、实例方法}
// 原型方法
Animal.prototype.eat = function () {
    }
// 原型链继承
function Cat (food) {
    }
Cat.prototype = new Animal()
Cat.prototype.name = 'cat'

除此之外,构造继承

function Cat (name) {
    
	Animal.call(this)
	this.name = name
}

实例继承

function Cat (name) {
    
	var instance = new Animal()
	instance.name = name
	return instance
}
通过原型链判断是不是数组

a.__proto__.__proto__... =?= Array.prototype

数组操作元素的方法 -> 主要考察map() forEach() filter()…方法
  • 不改变原数组的方法

IndexOf()/lastIndexOf():返回元素在数组第一次/最后一次出现的索引,从0开始。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值