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的值。
分享到:
相关推荐
主要有两种继承方式: 1. 构造函数继承(经典继承):通过`new`关键字创建一个父类(超类)的新实例,然后将其作为子类的`prototype`。 ```javascript function Student(name, grade) { Person.call(this, name)...
通常,这样的库可能会提供更方便的方式来创建类和实现继承,比如使用类语法糖,以及提供一些额外的功能,如方法重载、私有属性等。 例如,它可能包含类似以下的代码: ```javascript (function() { function ...
这种继承方式不同于类继承,而是通过将子类的原型对象设置为父类的一个实例来实现。 在JavaScript中,每个函数都有一个`prototype`属性,这个属性是一个对象,它的作用是当试图访问一个对象的属性时,如果该对象...
JavaScript中的原型(prototype)机制是实现继承的一种核心方式。由于JavaScript是一种基于原型的面向对象语言,它不支持传统的类(class)概念,因此其继承机制显得与众不同。在JavaScript中,对象可以直接从另一个...
构造函数定义对象+prototype继承的实现,含CSS样式
为了解决这些问题,JavaScript还提供了其他继承方式,如构造函数继承、组合继承等。在实际开发中,开发者会根据不同的需求选择合适的继承方式。 在使用继承时,我们还可以利用Object.getPrototypeOf()和...
这为不使用构造函数实现继承提供了一种方式。 标签中的"源码"可能意味着笔记深入探讨了`prototype`在JavaScript引擎中的实现,包括其在V8、SpiderMonkey等不同JavaScript引擎中的工作原理。这可能涉及到一些底层...
1. **类与对象继承**:Prototype.js引入了基于原型的类系统,允许开发者创建类并实现继承。这使得JavaScript代码可以采用面向对象的方式编写,增强了代码的可读性和可维护性。 2. **DOM操作**:Prototype提供了强大...
传统的继承方法是通过原型链(prototype chain)实现的,这通常涉及到对prototype对象的操作以及使用new关键字来创建新对象。然而,这种方法有时会显得复杂且代码可读性不强,同时可能会导致原型链污染的问题。本文...
主要介绍了JavaScript使用prototype属性实现继承操作,结合实例形式详细分析了JavaScript使用prototype属性实现继承的相关原理、实现方法与操作注意事项,需要的朋友可以参考下
以上就是JavaScript中常见的几种继承方式,每种都有其优缺点。在实际开发中,可以根据项目需求和性能考虑选择合适的方法。随着语言的发展,ES6引入了类(class)的概念,虽然在语法上更像传统的面向对象语言,但其...
标题"prototype_PrototypeJS1.6_"中提到的"Prototype"是一个JavaScript库,它为JavaScript编程提供了一套丰富的工具集,主要用于简化DOM操作、创建Ajax应用以及实现对象的继承机制。"1.6版本"表明这是该库的一个特定...
本文将深入探讨如何利用JavaScript中的prototype(原型)来封装继承机制,以及如何实现面向对象的继承特性。 ### prototype与继承的关系 在JavaScript中,每个对象都有一个原型(prototype),原型本身也是一个...
这种继承方式可以使得所有 Parent.prototype 中的属性和方法也能被重用,不需要重复创建原型对象实例。但是,这种方法实际上是将 Child.prototype 和 Parent.prototype 中保存的指针指向了同一个对象,因此,当我们...
JavaScript是一种基于对象和原型的动态类型语言,它的对象继承机制是通过原型链(Prototype Chain)来实现的。在JavaScript中,每个对象都有一个内置的`__proto__`属性,这个属性指向了创建该对象的构造函数的原型。...
首先,我们需要明确一点,JavaScript是一种基于原型的语言,不同于基于类的语言如Java或C++,JavaScript中的继承主要是...在实际应用中,我们通常根据具体的场景选择适合的继承方式,以达到代码复用和功能扩展的目的。
Prototype是JavaScript实现继承的主要机制,而继承则是对象之间共享属性和方法的方式。本文将深入探讨这两个概念,以及它们如何协同工作。 首先,每一个JavaScript函数(除了一些内置函数)都有一个`prototype`...
1.7.3版本继续沿用了基于类的模拟实现,通过`Class.create`和`Object.extend`等方法,开发者可以轻松构建复杂的继承层次结构。此外,它还引入了迭代器和观察者模式,使得对象之间的交互更加灵活和可控。 在实际应用...
- **`Object.extend`**:该方法用于将源对象的所有属性复制到目标对象中,是实现继承的一种方式。例如,`var c = a.extend(b);` 之后,`c` 同时拥有 `a` 和 `b` 的所有属性,但 `c instanceof ObjectB` 的结果为 `...
JavaScript中的`prototype`是一个核心概念,它涉及到对象继承和函数原型。在JavaScript中,每创建一个函数,该函数就会自动获得一个名为`prototype`的属性,这个属性是一个对象,用于实现对象间的继承。同时,每个...