第14行执行后,第16行的输出里有个c=3我能理解
但是第15行执行后,第18行应该是-1,但还是1
假如这样理解:第15行是新建立了一个obj变量,并且给它赋值
那么与它相似的第14行怎么就可以改变原来的obj呢
(不知道理解的对不对,请求指点)
第14行执行后,第16行的输出里有个c=3我能理解
但是第15行执行后,第18行应该是-1,但还是1
假如这样理解:第15行是新建立了一个obj变量,并且给它赋值
那么与它相似的第14行怎么就可以改变原来的obj呢
(不知道理解的对不对,请求指点)
这一块概念确实很绕,你得好好看看原型和原型链,知道概念也很容易出错
每个函数都有一个prototype属性指向其原型,每一个对象都有一个__proto__属性指向创建该对象的构造函数,对象可以通过__proto__访问到该对象上不存在的属性,这样链接起来的方式就是原型链。
本例子中,F()是一个构造函数,他的原型指向的是obj.proto,f 是通过F()实例化出来的,f.proto 就指向 F()的原型, 14行obj.proto 和 15行不是同一个,F()原型指向的不是同一个