文章阅读

沉浸阅读完整内容

写文章

写出下面Console.log的结果

正在统计阅读人数 正在统计字数
登录收藏0
字号 100%

      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

流程:

  1. 这段代码展示了 JavaScript 中的原型链的工作原理。在代码执行过程中,首先创建了一个名为 foo 的空对象,然后定义了一个名为 F 的函数。

  2. 接下来,通过给 Object.prototype 添加属性 a,以及给 Function.prototype 添加属性 b,这些属性会被继承到 foo 对象和 F 函数上。

  3. 当我们尝试打印 foo.a 时,由于 foo 对象本身没有 a 属性,JavaScript 会沿着原型链向上查找,最终找到了 Object.prototype 上的 a 属性,因此打印结果是 value a

  4. 而对于 foo.b,由于 foo 对象和 Foo 函数本身都没有 b 属性,于是 JavaScript 会继续向上查找,找到了 Function.prototype 上的 b 属性,因此打印结果是 undefined

  5. 对于 F.a,由于 F 是一个函数,它本身不会继承 Object.prototype 上的属性,但是由于 JavaScript 中的函数也是对象,所以它可以访问到 Object.prototype 上的属性。因此打印结果是 value a

  6. 最后,对于 F.b,由于 F 函数本身没有 b 属性,JavaScript 会继续向上查找,找到了 Function.prototype 上的 b 属性,因此打印结果是 value b

推荐阅读

4 篇精选
文章 / 28函数封装计算商品价格 文章 / 26计算2数累计之和 文章 / 29商品计算 文章 / 27JS三目运算比大小

发表评论

评论 0

还没有评论,欢迎留下第一条讨论。

分享精彩,传递价值

生成专属海报,分享你的文章,让更多人发现好内容

浏览器不支持 Canvas,无法生成海报。

每日签到

每天来这里,记录一点持续积累。

当前积分--积分
本月签到--
本月获得--积分
正在读取