`

prototype方式继承

阅读更多
javascript的继承和java不同,不是基于class实现,而是基于prototype实现的。
function Animal(nAge){
    this.age = nAge;
}
Animal.prototype.eat = function(){
    // eat something
};
function Cat(sName){
    this.name = sName;
}
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;
var cat = new Cat("kitty");
cat.eat();

其中
Cat.prototype.constructor = Cat;

这行代码的作用是:
默认情况下,Cat.prototype.constructor是Cat。但是为了使Cat继承Animal,设置了
Cat.prototype = new Animal();

将Cat.prototype设置为Animal的一个实例。于是这个时候Cat.prototype.constructor就成了Animal实例的constructor,即Animal.prototype.constructor,也就是Animal。所以为了不丢失cat的构造函数,需要手工设置
Cat.prototype.constructor = Cat;

使构造函数指向Cat。在javascript中使用继承时,要务必注意这一点。任何情况下如果给Cat.prototype赋值了,比如
Cat.prototype = {};

那么接下来一定要手工设置Cat.prototype.constructor的值。
分享到:
评论

相关推荐

    js遍历属性 以及 js prototype 和继承

    主要有两种继承方式: 1. 构造函数继承(经典继承):通过`new`关键字创建一个父类(超类)的新实例,然后将其作为子类的`prototype`。 ```javascript function Student(name, grade) { Person.call(this, name)...

    javascript中类和继承(代码示例+prototype.js)

    通常,这样的库可能会提供更方便的方式来创建类和实现继承,比如使用类语法糖,以及提供一些额外的功能,如方法重载、私有属性等。 例如,它可能包含类似以下的代码: ```javascript (function() { function ...

    javascript的prototype继承

    这种继承方式不同于类继承,而是通过将子类的原型对象设置为父类的一个实例来实现。 在JavaScript中,每个函数都有一个`prototype`属性,这个属性是一个对象,它的作用是当试图访问一个对象的属性时,如果该对象...

    详解JavaScript中基于原型prototype的继承特性_.docx

    JavaScript中的原型(prototype)机制是实现继承的一种核心方式。由于JavaScript是一种基于原型的面向对象语言,它不支持传统的类(class)概念,因此其继承机制显得与众不同。在JavaScript中,对象可以直接从另一个...

    构造函数定义对象+prototype继承的实现.html

    构造函数定义对象+prototype继承的实现,含CSS样式

    Javascript中的prototype与继承

    为了解决这些问题,JavaScript还提供了其他继承方式,如构造函数继承、组合继承等。在实际开发中,开发者会根据不同的需求选择合适的继承方式。 在使用继承时,我们还可以利用Object.getPrototypeOf()和...

    prototype学习笔记

    这为不使用构造函数实现继承提供了一种方式。 标签中的"源码"可能意味着笔记深入探讨了`prototype`在JavaScript引擎中的实现,包括其在V8、SpiderMonkey等不同JavaScript引擎中的工作原理。这可能涉及到一些底层...

    Prototype-1.6.0 中文版\英文版\Prototype.js

    1. **类与对象继承**:Prototype.js引入了基于原型的类系统,允许开发者创建类并实现继承。这使得JavaScript代码可以采用面向对象的方式编写,增强了代码的可读性和可维护性。 2. **DOM操作**:Prototype提供了强大...

    JavaScript不使用prototype和new实现继承机制

    传统的继承方法是通过原型链(prototype chain)实现的,这通常涉及到对prototype对象的操作以及使用new关键字来创建新对象。然而,这种方法有时会显得复杂且代码可读性不强,同时可能会导致原型链污染的问题。本文...

    JavaScript使用prototype属性实现继承操作示例

    主要介绍了JavaScript使用prototype属性实现继承操作,结合实例形式详细分析了JavaScript使用prototype属性实现继承的相关原理、实现方法与操作注意事项,需要的朋友可以参考下

    JavaScript实现继承的几种方式

    以上就是JavaScript中常见的几种继承方式,每种都有其优缺点。在实际开发中,可以根据项目需求和性能考虑选择合适的方法。随着语言的发展,ES6引入了类(class)的概念,虽然在语法上更像传统的面向对象语言,但其...

    prototype_PrototypeJS1.6_

    标题"prototype_PrototypeJS1.6_"中提到的"Prototype"是一个JavaScript库,它为JavaScript编程提供了一套丰富的工具集,主要用于简化DOM操作、创建Ajax应用以及实现对象的继承机制。"1.6版本"表明这是该库的一个特定...

    Javascript学习笔记9 prototype封装继承

    本文将深入探讨如何利用JavaScript中的prototype(原型)来封装继承机制,以及如何实现面向对象的继承特性。 ### prototype与继承的关系 在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个...

    【JavaScript的9种继承实现方式归纳】js实现继承的几种方式.pdf

    这种继承方式可以使得所有 Parent.prototype 中的属性和方法也能被重用,不需要重复创建原型对象实例。但是,这种方法实际上是将 Child.prototype 和 Parent.prototype 中保存的指针指向了同一个对象,因此,当我们...

    prototype

    JavaScript是一种基于对象和原型的动态类型语言,它的对象继承机制是通过原型链(Prototype Chain)来实现的。在JavaScript中,每个对象都有一个内置的`__proto__`属性,这个属性指向了创建该对象的构造函数的原型。...

    Javascript中 关于prototype属性实现继承的原理图

    首先,我们需要明确一点,JavaScript是一种基于原型的语言,不同于基于类的语言如Java或C++,JavaScript中的继承主要是...在实际应用中,我们通常根据具体的场景选择适合的继承方式,以达到代码复用和功能扩展的目的。

    深入了解javascript中的prototype与继承

    Prototype是JavaScript实现继承的主要机制,而继承则是对象之间共享属性和方法的方式。本文将深入探讨这两个概念,以及它们如何协同工作。 首先,每一个JavaScript函数(除了一些内置函数)都有一个`prototype`...

    prototype_1.7.3.js 最新版本

    1.7.3版本继续沿用了基于类的模拟实现,通过`Class.create`和`Object.extend`等方法,开发者可以轻松构建复杂的继承层次结构。此外,它还引入了迭代器和观察者模式,使得对象之间的交互更加灵活和可控。 在实际应用...

    prototype 1.3 源码解读

    - **`Object.extend`**:该方法用于将源对象的所有属性复制到目标对象中,是实现继承的一种方式。例如,`var c = a.extend(b);` 之后,`c` 同时拥有 `a` 和 `b` 的所有属性,但 `c instanceof ObjectB` 的结果为 `...

    JavaScript的prototype

    JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...

Global site tag (gtag.js) - Google Analytics