最近在了解javascript的继承机制,了解到Javascript的机制是用时复制,继承是原型链继承,现在有种一知半解的感觉,在此记录一下:
每一个构造函数有自己的prototype属性,指向prototype这个对象,prototype这个对象有一个constructor属性,指向这个构造函数,实例的__proto__指向构造函数的prototype:
(我自己画了一张草图)
所以实现一个简单继承很简单:
function Person(){ this.name = 'Person'; }; Person.prototype.getName = function(){ return this.name; }; var person = new Person(); console.log(person.getName());//Person
如果我们有一个新的构造函数要继承这个方法呢,只需要改变这个构造函数的prototyope的指向:
function Person(){ this.name = 'Person'; }; Person.prototype.getName = function(){ return this.name; }; var person = new Person();// Person console.log(person.getName()); var Bar = function() { this.name = "Bar"; }; Bar.prototype = person.__proto__; var bar = new Bar(); console.log(bar.getName());// Bar
这样就实现了方法的继承。
不对的地方希望有人看到能指正ORZ