原型
以下代码,执行会输出什么?
function Foo() {
Foo.a = function() { console.log(1) }
this.a = function() { console.log(2) }
}
Foo.prototype.a = function() { console.log(3) }
Foo.a = function() { console.log(4) }
Foo.a()
let obj = new Foo()
obj.a()
Foo.a()
分析
把自己想象成 JS 引擎,你不是在读代码,而是在执行代码 —— 定义的函数如果不执行,就不要去看它的内容 —— 这很重要!!!
按这个思路来“执行”代码
原型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P79ZHgqU-1689087239719)(./img/Foo原型.png)]
答案
执行输出 4 2 1
重点
- 原型基础知识
- 你不是在读代码,而是在模拟执行代码