javascript继承的6种方式

第一种:原型链继承:

function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty = new function(){return this.property;}
function Person(){this.feature="直立行走";}
Person.prototype = new Animal();
Person.prototype.getFeature = function(){return this.feature;}
var p1 = new Person();
console.log(p1.getProperty());
console.log(p1.getFeature());

第二种:借用构造函数继承:

function Animal(){this.property="都要呼吸"; this.getProperty=function(){return this.property;};}
function Person(){Animal.call(this);this.feature="直立行走";}
Person.prototype.getFeature = function(){return this.feature;}
var p1 = new Person();
console.log(p1.getProperty());
console.log(p1.getFeature());

第三种:组合继承:(最常用的继承模式)

function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty = function(){return this.property;};
function Person(){Animal.call(this);this.feature="直立行走";}
Person.prototype = new Animal();
Person.prototype.constructor = Person;
Person.prototype.getFeature = function(){return this.feature;};
console.log(Person.getProperty());
console.log(Person.getFeature());

第四种:原型式继承

var animal = {property: "都要呼吸"; getProperty: function(){return this.property;}};
function person(animal){function Person(){this.feature="直立行走";} Person.prototype=animal; Person.prototype.getFeature(){return this.feature;} return new Person();};
var p1 = person(animal);
console.log(p1.getProperty());
console.log(p1.getFeature());

ECMAScript 5通过新增Object.create()方法规范化了原型式继承。

var animal = {property: "都要呼吸"; getProperty: function(){return this.property;}}
var p1 = Object.create(animal, {feature: {value: "直立行走"}, getFeature: {value: function(){return this.feature;}}});
console.log(p1.getProperty());
console.log(p2.getFeature());

第五种:寄生式继承

var animal = {property: "都要呼吸"; getProperty: function(){return this.property;}};
function person(animal){var p1 = Object.create(animal, {feature: {value: "直立行走"}}); p1.getFeature = function(){return this.feature;}; return p1;}
var p1 = person(animal);
console.log(p1.getProperty());
console.log(p1.getFeature());

第六种:寄生组合式继承

function Animal(){this.property="都要呼吸";}
Animal.prototype.getProperty=function(){return this.property;}
function Person(){Animal.call(this);this.feature="直立行走";}
function inheritPrototype(Person, Animal){var person=Object.create(Animal.prototype); person.constructor=Person; Person.prototype=person;}
inheritPrototype(Person, Animal);
Person.prototype.getFeature=function(){return this.feature;}
var p1 = new Person();
console.log(p1.getProperty());
console.log(p1.getFeature());

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mannuandeyangguang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值