你说的写move是这样吧 var person = new Person("Jim"); person.move = function () { alert("Finish move for person [" + this.name + "]") }; person.move();试了确实能修改move方法,也就是说原型链是当类本身没有该方法的时候才会使用原型链上的方法,那想问下把方法放在原型链上和直接作为类的成员方法各自的优缺点是什么呢?
就是 人类和我的区别 假定我继承与人类 人类有思考这个功能的 所以我也能思考 我有一个名字 但是我的名字并不是人类的名字 (人类不需要名字 我需要名字)only you 放在自己下面 all 放在类下面
Person对象自带有move方法,不会再向原型链查找
如果将Person类中的move()方法去掉,就显示Ready move for person [jim] ,那证明prototype是可以改变原有对象的方法和属性(相当于增加),那为什么不能重写原有的方法呢,我的疑问也在此。
改写就写个新的类继承Person不就好了么
var a = xxx.move 会先看对象本身有没有move对象 没有则从原型链上查找move写访问 movexxx.move = move 则直接覆盖对象本身的 move属性 如果不存在 则 对象下增加一个move属性
注意 上面是不会访问 prototype的如果要改写 原型那么
直接: xxx. prototype.move = ....
改写就写个新的类继承Person不就好了么如果是写新类然后继承,那就用新类new一个对象了,那就不是用的Person类了,我现在还是想继续用Person类。其实我最想弄清楚的就是原型链上的move()方法和类的成员方法move()是什么关系
你说的写move是这样吧 var person = new Person("Jim");
person.move = function () { alert("Finish move for person [" + this.name + "]") };
person.move();试了确实能修改move方法,也就是说原型链是当类本身没有该方法的时候才会使用原型链上的方法,那想问下把方法放在原型链上和直接作为类的成员方法各自的优缺点是什么呢?
就是 人类和我的区别
假定我继承与人类
人类有思考这个功能的 所以我也能思考
我有一个名字 但是我的名字并不是人类的名字 (人类不需要名字 我需要名字)only you 放在自己下面
all 放在类下面