写出下面Console.log的结果
时间:2023-9-5 09:01 作者:小诸葛 分类: 面试题 正在检查是否收录...
var foo = {},F = function () {}
Object.prototype.a = 'value a'
Function.prototype.b = 'value b'
console.log(foo.a) //结果 === value a
console.log(foo.b) //结果 === undefined
console.log(F.a) //结果 === value a
console.log(F.b) //结果 === value b
流程:
-
这段代码展示了 JavaScript 中的原型链的工作原理。在代码执行过程中,首先创建了一个名为
foo
的空对象,然后定义了一个名为F
的函数。 -
接下来,通过给
Object.prototype
添加属性a
,以及给Function.prototype
添加属性b
,这些属性会被继承到foo
对象和F
函数上。 -
当我们尝试打印
foo.a
时,由于foo
对象本身没有a
属性,JavaScript 会沿着原型链向上查找,最终找到了Object.prototype
上的a
属性,因此打印结果是value a
。 -
而对于
foo.b
,由于foo
对象和Foo
函数本身都没有b
属性,于是 JavaScript 会继续向上查找,找到了Function.prototype
上的b
属性,因此打印结果是undefined
。 -
对于
F.a
,由于F
是一个函数,它本身不会继承Object.prototype
上的属性,但是由于 JavaScript 中的函数也是对象,所以它可以访问到Object.prototype
上的属性。因此打印结果是value a
。 -
最后,对于
F.b
,由于F
函数本身没有b
属性,JavaScript 会继续向上查找,找到了Function.prototype
上的b
属性,因此打印结果是value b
。
版权说明
推荐阅读:
扫描二维码,在手机上阅读