我創建了一個 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()我有幾個問題:又名原型對象是在哪個階段Foo.prototype創建的?解釋器何時加載Foo到全局范圍或何時new Foo()首次被調用,或在任何其他階段?它的引用存儲在哪個詞法范圍內?(因為在可視化器中沒有這樣的參考)應該foo并共享屬于而不是擁有自己的副本的bar方法,如可視化器中所示?speak()Foo.prototype原型鏈和范圍鏈是否無關?例如,當foo.speak()被調用時,首先我們跟蹤作用域鏈得到值的foo,然后原型鏈得到speak()?
Javascript 原型鏈與作用域鏈
弒天下
2023-04-14 17:22:14