多项选择题

var p1 = new Point(2,3);var p2 = new Point(3,2);p1.__proto__.printName = function () { return 'Oops' };p1.printName() p2.printName()var p3 = new Point(4,2);p3.printName()
对以上代码的解释正确的是 ()

A.在p1的原型上添加了一个printName()方法
B.由于p1的原型就是p2的原型,因此p2也可以调用这个方法
C.新建的实例p3也可以调用这个方法
D.使用实例的__proto__属性改写原型,必须相当谨慎,不推荐使用,因为这会改变“类”的原始定义,影响到所有实例