javascript继承机制的设计思想

来源:互联网 发布:网络游戏排行榜 知乎 编辑:程序博客网 时间:2024/05/01 23:08

为什么要使用prototype?
new关键字的作用?

//构造函数var Pet = function(word){    this.word = word;    this.type = 'animal';}//用new关键字继承petvar dog = new Pet('wang wang~');dog.word;//wang wang~var cat = new Pet('miao miao~');cat.word;//miao miao~dog.type = 'person';dog.type;//personcat.type;//animal

通过继承得到的属性并没有共享,这样就造成资源上的极大浪费。于是引入了prototype原型继承

//构造函数var Pet = function(word){    this.word = word;    this.type = 'animal';}Pet.prototype.type = 'person';//用new关键字继承petvar dog = new Pet('wang wang~');dog.word;//wang wang~var cat = new Pet('miao miao~');cat.word;//miao miao~dog.prototype.type = 'person';dog.type;//personcat.type;//person

new关键字到底做了什么?

1.创建类的实例。这步是把一个空的对象的 __proto__ 属性设置为 F.prototype 。2.初始化实例。函数 F 被传入参数并调用,关键字 this 被设定为该实例。3.返回实例。function New (f) {    var n = { '__proto__': f.prototype }; /*第一步*/    f.apply(n, arguments);            /*第二步*/    return n;                         /*第三步*/}
0 0