Javascript 原型链与作用域链

我创建了一个 javascript 代码片段,这里是可视化工具的链接

function Foo(name) {

  this.name = name

  this.speak = function() {

    console.log(this.name)

  }

}


function init() {

  function init_() {

    var foo = new Foo('foo')

    foo.hear = function() {

      console.log('i can hear')

    }

    var bar = new Foo('bar')

    bar.look = function() {

      console.log('i can look')

    }

    foo.speak()

    bar.speak()

  }

  

  init_()

}


init()

我有几个问题:

  1. 又名原型对象是在哪个阶段Foo.prototype创建的?解释器何时加载Foo到全局范围或何时new Foo()首次被调用,或在任何其他阶段?它的引用存储在哪个词法范围内?(因为在可视化器中没有这样的参考)

  2. 应该foo并共享属于而不是拥有自己的副本的bar方法,如可视化器中所示?speak()Foo.prototype

  3. 原型链和范围链是否无关?例如,当foo.speak()被调用时,首先我们跟踪作用域链得到值的foo,然后原型链得到speak()?

http://img1.mukewang.com/64391b6c000125ed06520339.jpg

弑天下
浏览 108回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript