关于this的指向问题。

来源:16-3 作用域和闭包-this

精慕门8222655

2018-11-12

<script>
function Parent() {
            this.a = 1;
            this.b = [1, 2, this.a];
            this.c = { demo: 5 };
            this.show = function () {
                console.log(this.a , this.b , this.c.demo );
            }
        }
function Child() {
     this.a = 2;
     this.change = function () {
         this.b.push(this.a);
         this.a = this.b.length;
         this.c.demo = this.a++;
     }
 }

 Child.prototype = new Parent(); 
 var parent = new Parent();
 var child1 = new Child();
 var child2 = new Child();
 child1.a = 11;
 child2.a = 12;

child1.show();//11 [1, 2, 1] 5
child2.show();//12 [1, 2, 1] 5

 child1.change();
 child1.show();//5 [1, 2, 1, 11] 4

 child2.change();
 child2.show();//6 [1, 2, 1, 11, 12] 5
 //老师在child1.change()操作中,影响了child2的值,是不是可以理解成child1,和child2指向同一个地址内的数据?

</script>

老师在child1.change()操作中,影响了child2的值,是不是可以理解成
1.通过同一个构造函数创建的对象,child1,和child2对象指向同一个地址内的数据?
2.但是new不是会创建一个新的实例(分配一个新的地址?)如果不是同一个地址的话应该不会互相修改数据的吧?

写回答

1回答

双越

2018-11-12

是的。new 会新生成一个对象,而不是原来的对象。

0
1
精慕门8222655
老师,那个代码中child1.change()为什么会改变继承下child2对象里面你的值呢?
2018-11-12
共1条回复

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程

相似问题