上篇文章给大家分享了 js继承中的 组合继承
今天给大家分享一下 js 继承中的 原型式继承
原型式继承
JavaScript的原型式继承是一种基于对象的继承方式,通过复制一个对象的属性和方法来创建一个新对象,并将原对象作为新对象的原型。这种继承方式可以通过Object.create()
方法来实现。
基本步骤:
-
创建一个原型对象
parent
,作为新对象的原型。原型对象可以是任意一个已有的对象。 -
创建一个新对象
child
,然后使用Object.create()
方法创建一个新对象,并将原型对象作为参数传入。 -
可选地,可以为新对象添加/修改属性和方法。
// 1
var parent = {
name: "Parent",
sayHello: function() {
console.log("Hello, " + this.name + "!");
}
};
// 2
var child = Object.create(parent);
child.name = "Child";
// 3
child.age = 10;
child.sayAge = function() {
console.log("I am " + this.age + " years old.");
};
// 测试
child.sayHello(); // 输出 "Hello, Child!"
child.sayage(); // 输出 "I am 10 years old."
通过这种方式,子对象 child
拥有了自己的变量 age
和方法 sayAge
,同时也继承了父对象 parent
的属性和方法。
需要注意的是,子对象的属性和方法会覆盖原型对象的同名属性和方法。在访问属性或方法时,会先在子对象中查找,如果找不到再沿着原型链向上查找。因此,当我们调用child.sayHello()
时,会输出"Hello, Child",而不是"Hello, Parent"。
优点
-
灵活性:原型式继承不需要定义构造函数,可以在不创建构造函数的情况下快速创建对象并继承属性和方法。这种灵活性使得原型式继承适用于简单的继承需求。
-
简单易懂:原型式继承的概念相对简单,容易理解和实现。它是基于JavaScript的原型机制,与JavaScript的对象模型紧密相关。
-
可扩展性:通过修改原型对象,可以动态地为所有继承自该原型的对象添加新的属性和方法。这使得原型式继承具有较高的可扩展性。
缺点
-
共享原型:原型式继承是一种浅拷贝的方式,即新对象与原型对象共享同一个原型。如果修改了原型对象的属性或方法,所有继承自该原型的对象都会受到影响。这可能导致意外的副作用,特别是在多个对象之间共享原型时。
-
无法实现多级继承:原型式继承无法直接实现多级继承,即无法直接继承父对象的原型。如果需要实现多级继承,可能需要使用其他继承方式,如组合继承或类继承。
-
难以追踪继承关系:由于原型式继承是基于原型链的,继承关系可能变得复杂且难以追踪。当对象之间存在多层继承关系时,可能需要花费更多的时间和精力来理清继承关系。
总的来说,原型式继承是一种简单而灵活的继承方式,适用于简单的继承需求。然而,它也有一些限制和潜在的问题,需要在使用时仔细考虑和处理。对于更复杂的继承需求,可能需要考虑其他继承方式。
结语
牵手 持续为你分享各类知识和软件 ,欢迎访问、关注、讨论 并留下你的小心心❤
标签:web,继承,型式,js,对象,原型,child,属性 From: https://blog.51cto.com/u_15994752/7484710