亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第六天 數據結構和算法

链表 & 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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消