- 原型链的本质是链表
- 原型链上的节点是各种原型对象,比如Fucntion.prototype、Object.protot…
- 不同于
p.next,原型链通过__proto__属性连接各种原型对象
原型链知识点
- 如果A沿着原型链能找到B.prototype,那么A instanceof B为true
- 如果在A对象上没有找到x属性,那么会沿着原型链找x属性
面试题
题目: 简述instanceof的原理,并用代码实现
知识点:如果A沿着原型链可以找到B.prototype,那么A instanceof B为true
解法:遍历A的原型链,如果找到B.prototype,返回true否则返回false
const instanceOf = (A, B) => {let p = Awhile (p) {if (p === B.prototype) {return true}p = p.__proto__}return false}console.log(instanceOf({}, Object))
题目:一下代码的执行结果👇
var foo = {},F = function () { }Object.prototype.a = 'value a'Function.prototype.b = 'value b'console.log(foo.a); // 'value a'console.log(foo.b); // undefinedconsole.log(F.a); // 'value a'console.log(F.b); // 'value b'
