Discuss
/
JavaScript
/
如果想要创建的Student对象共享多个函数,可以将Student.prototype赋值为自定义对象
如果想要创建的Student对象共享多个函数,可以将Student.prototype赋值为自定义对象
Topic source也就是说必须对每一个共享的函数必须进行形如下绑定吗?
Student.prototype.hello = function () {...};
Student.prototype.run = function () {...};
Student.prototype.fly = function () {...};
按照我的方法原型链是不是就变成了这样:
xiaoming ----> Student.prototype ----> 自己创建的匿名对象 ----> 自己创建的匿名对象.prototype ----> Object.prototype ----> null
?
@Hypnos1973:
按照你的方法,原型链变成了:
xiaoming --> Student.prototype --> Object.prototype --> null
在chrome中验证一下:
xiaoming.__proto__===Student.prototype; //true 第一层原型链正确
Student.prototype.__proto__===Object.prototype;//true 为什么Student.prototype的原型是Object.prototype呢?
因为Student.prototype本身就是一个对象,你只不过创建了一个匿名对象覆盖掉了默认的Student.prototype。
在chrome中验证一下:
Student.prototype;
// Object {}
// fly :function {}
// hello :function {}
// run :function {}
上面的代码表明Student.prototype是Object对象,对象中包含fly、hello、run 方法。
并且按照《Javascript高级程序设计》第三版p155页讲到重写默认原型对象后,原型对象的constructor会由原来的构造函数变成Object构造函数,验证下对不对:
Student.prototype.constructor;
//function Object() {} 结果是Object构造函数
为什么呢?在《Javascript高级程序设计》6.2.3节自行寻找答案吧,这一节解决了我对原型链的很多困惑。
- 1
Hypnos1973
RT,不知道有没有不妥的地方或者更好的方法