原型链方式
默认继承机制,将需要重用的属性和方法迁移至原型对象中,而将不可重用的部分设置为对象的自身属性,但这种继承方式需要新建一个实例作为原型对象,效率上会低一些。
function Shape() {
this.name = '形状';
}
Shape.prototype.perimeter = function() { };
function Square() {
this.length = 1;
}
// Javascript中没有抽象类的概念,所以Shape是可以实例化的
// 子对象构造函数的prototype属性指向父对象的一个实例
Square.prototype = new Shape();
// Square的prototype属性被重写了,指向了一个新对象,但是这个新对象的constructor属性却没有正确指向Square,JS 引擎并不会自动完成这件工作,需要手动去将Square的原型对象的constructor属性重新指向Square
Square.prototype.constructor = Square;
Square.prototype.perimeter = function() {
return this.length * 4;
};
var square = new Square();
square.name; // '形状'
square.perimeter(); // 4
分享到:
相关推荐
原型链继承是JavaScript中实现继承的基本方式,它依赖于原型(`__proto__`)和构造函数之间的关系。在JavaScript中,每个对象都有一个内部属性`[[Prototype]]`,通常通过`__proto__`访问。当我们尝试访问对象的一个...
JavaScript原型链是JavaScript语言中的一个核心特性,它关乎对象之间的继承关系。在JavaScript中,一切皆为对象,而原型链则是实现对象间属性和方法共享的一种机制。理解原型链对于深入学习JavaScript至关重要。 ...
在JavaScript中,原型链继承是实现面向对象...总的来说,"js代码-原型链继承demo"是一个学习和实践JavaScript原型链继承的实例,通过阅读和理解代码,你可以深入理解JavaScript的继承机制,并能够运用到实际项目中。
JavaScript作为一门基于原型的语言,其原型和原型链的概念是理解和掌握JS继承机制的关键。接下来将详细阐述这些概念。 #### 普通对象与函数对象 在JavaScript中,一切皆为对象,但对象可以分为两类:普通对象和...
3. **组合继承**:结合了原型链和构造函数继承,避免了各自的问题,是JavaScript中常用的继承模式。 4. **寄生式继承**:不直接修改原型,而是先创建一个父对象的副本,然后对副本进行定制,最后返回这个副本作为...
在JS中,主要通过原型链来实现继承。 ### 1. 原型(Prototype) 在JS中,每个函数都有一个特殊的内部属性`prototype`,它是一个对象,可以为该函数创建的实例提供共享的属性和方法。当尝试访问对象的一个属性时,...
JavaScript中的继承和原型链是其核心特性之一,尤其对于从基于类的语言背景转到JavaScript的开发者来说,理解这一概念至关重要。在JavaScript中,没有传统的类,而是基于对象和原型进行继承。每个对象都有一个指向其...
### 探索JavaScript的原型链:原型继承的奥秘 #### 一、JavaScript与原型继承的基础 JavaScript(简称JS)是一种广泛使用的高级编程语言,在Web开发中占据着核心地位。它的特性之一是基于原型的继承机制,这与其他...
JavaScript是前端开发中的核心语言,其原型和原型链是理解JavaScript对象继承机制的关键。本章将深入探讨这两个重要概念,并揭示它们在实际编程中的应用。 首先,我们需要了解什么是原型(Prototype)。在...
JavaScript 原型链是语言的核心特性之一,它在实现对象的继承和共享属性时起着关键作用。本文将深入探讨JavaScript原型链的工作原理及其可能导致的安全问题——原型链污染。 首先,JavaScript 中的对象继承并不像...
JavaScript是一种面向对象的编程语言,它允许通过原型链实现对象之间的继承。原型链继承是基于原型对象来实现继承的一种机制,通过将父对象设置为子对象的原型来实现对父对象属性和方法的继承。下面将详细介绍原型链...
// 继承原型链 Child.prototype = Object.create(Base.prototype); Child.prototype.constructor = Child; // 修复constructor属性 Child.prototype.introduce = function() { console.log(`My name is ${this....
当试图访问一个对象上的属性或方法时,如果对象本身没有这个属性或方法,JavaScript 引擎会沿着原型链向上查找,直到找到该属性或方法为止。 #### 原型的使用方式 1. **原型使用方式 1**: - 首先定义一个构造...
在JavaScript中,有两种类型的继承:原型链继承和构造函数继承。本文主要关注原型链继承,它是基于对象的`[[Prototype]]`属性和函数的`prototype`属性实现的。 1. **`prototype`**: - 每个函数对象都有一个`...
JavaScript中的原型链和继承是其面向对象编程的核心概念。它们为JavaScript对象提供了共享属性和方法的能力,使得代码的复用和扩展变得更为高效。在这个主题中,我们将深入探讨这两个概念,以及它们在`main.js`文件...
JavaScript是一种基于原型(Prototype)的面向对象编程语言,它的继承机制不同于传统的类继承,而是采用原型链(Prototype Chain)的方式实现。在这个模式下,对象可以继承其他对象的属性和方法,形成一种“类”的...
原型链和继承是JavaScript中实现面向对象编程的重要概念。本篇将深入探讨这两个关键知识点,并结合提供的`main.js`代码示例进行解析。 ### 一、JavaScript 原型链 原型链是JavaScript中实现对象继承的一种方式,它...