为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第六天 数据结构和算法

链表 & JS原型链

JS原型链类似于链表,不同的是链表使用next连接;JS原型链用__proto__来连接。

原型链举例如下:
[对象] obj -> Object.prototype -> null
[函数] fun -> Function.prototype -> Object.prototype -> null
[数组] arr -> Array.prototype -> Object.prototype -> null

instanceof 的原理,并用代码实现
  • instanceof是JS中的一个操作符。
  • A instanceof B: A是否是B的原型,或者说B是否在A的原型链上
function instanceof(A, B) {
	let p = A;
	while(p) {
		if(p === B.prototype) {
			return true;
		}
		p = p.__proto__;
	}
	return false;
}
看看下面代码输出的结果
var foo = {},
	F = function(){};
Object.prototype.a = 'a';
Function.prototype.b = 'b';

console.log(foo.a);  // 'a'
console.log(foo.b); // undefined

console.log(F.a);  // 'a'
console.log(F.b);  // 'b'
  • 访问foo.a,先从foo对象上找,没找到,沿着原型链找到Object.prototype,发现有属性a,打印出 a
  • 访问foo.b,先从foo对象上找,没找到,沿着原型链没有找到b,打印出 undefined
  • 访问F.a,先从F上找,没找到,沿着原型链找到Object.prototype,发现有属性a,打印出 a
  • 访问F.b,先从F上找,没找到,沿着原型链找到Function.prototype,发现有属性b,打印出 b

使用链表指针获取JSON节点的值

如下,给出一个json数据,并给出查找的路径,获取json节点的值

const json = {
	a: {b: {c: 1}},
	d: {e: 2}
}
const path = ['a', 'b', 'c']

思路:遍历链表的方式

function getNode() {
	let p = json;
	path.forEach((key)=> {
		p = p[key]
	})
	return p;
}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
3
获赞与收藏
9

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消