js中,先有对象后有类。
js继承时,它跟其他语言有区别。js继承实际上是通过原型链。原型链的上的对象可以随意指定,但他是一个对象,和本对象只有一个关系就是原型链。
如果执行了原型链的方法,原型链方法中的this指针绑定的还是本对象。但是疑惑的原型链中方法还是能修改到原型链的对象的属性值。这是因为虽然this绑定了本对象,但是如果this指向的属性在本对象没有,他仍然会继续往上查找,找到原型链上对象的属性进行修改。
虽然原型链上的对象在本对象来说都是只读,也就是不能去赋值和删除原型链对象的属性。但是可以对这个属性(也是对象),执行他的方法。比如如果这个属性是一个数组,可以对这个数组进行增删改查。
如果要避免修改到原型链的对象,可以修改方法为赋值语句,这样就只会对本对象进行操作