继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

康遇
关注TA
已关注
手记 76
粉丝 3
获赞 9

链表 & 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;
}

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP