<SCRIPT LANGUAGE="JavaScript">
<!--
var Class = {
isPrototype: function () {},
create: function() {
return function() {
if (arguments && arguments[0] != Class.isPrototype)
this.initialize.apply(this, arguments);
}
},
extend : function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
},
inherit: function () {
var superClass = arguments[0];
var proto = new superClass(Class.isPrototype);
for (var i = 1; i < arguments.length; i++) {
if (typeof arguments[i] == "function") {
var mixin = arguments[i];
arguments[i] = new mixin(OpenLayers.Class.isPrototype);
}
Class.extend(proto, arguments[i]);
if((arguments[i].hasOwnProperty && arguments[i].hasOwnProperty('toString')) ||
(!arguments[i].hasOwnProperty && arguments[i].toString)) {
proto.toString = arguments[i].toString;
}
}
return proto;
}
};
var Base=Class.create();
Base.prototype={
x : 1,
y : 2,
initialize : function(){
this.x=100;
this.y=10;
},
area : function(){
return this.x * this.y
}
}
var Child = Class.create();
Child.prototype=Class.inherit(Base,{
initialize : function(){
Base.prototype.initialize.apply(this);
this.x=10;
},
area : function(){
var old=Base.prototype.area.apply(this);
return old + 100000;
}
});
var base=new Base();
var child=new Child();
alert(child.area())
//-->
</SCRIPT>
分享到:
相关推荐
通过对JavaScript的原型继承机制的介绍和实例分析,提出一个改进的“寄生组合模式”,使读者能够更好地理解和应用JavaScript的原型继承。 概述 JavaScript是一门面向Web的编程语言,具有高端、动态以及面向对象的...
在JavaScript中,对象可以直接从另一个对象继承属性和方法,这主要是通过原型链(prototype chain)来实现的。 首先,每个函数都有一个`prototype`属性,这个属性是一个对象,当通过该函数创建新对象时,新对象会...
JavaScript 中的原型和继承详解 在深入探讨编程语言时,我们经常会遇到一些专业术语,比如“原型”和“继承”,它们是面向对象编程中的核心概念。JavaScript 作为一门灵活且功能强大的编程语言,其原型和继承的实现...
当试图访问一个对象的属性时,JavaScript会首先在当前对象中查找,如果找不到,则会向上搜索其原型,直至找到属性或到达原型链的顶端(即`null`)。通过设置一个对象的`__proto__`属性为另一个对象,可以实现继承。 ...
JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...
3. **基于原型**:JavaScript使用基于原型的继承,而不是基于类。 4. **自动内存管理**:具有垃圾回收机制,自动回收不再使用的对象所占用的内存。 5. **动态类型**:变量的类型在运行时确定,不需要事先声明。 6. *...
寄生组合继承解决了组合继承中父类构造函数会被调用两次的问题,通过创建父类的一个不被使用的实例,然后将子类的原型指向这个实例的原型。 ```javascript function inheritPrototype(subType, superType) { let ...
闭包是JavaScript中的一个高级特性,允许函数访问并操作其外部作用域的变量,即使在其外部作用域已经结束时也是如此。 3. **对象与原型链**:JavaScript的万物皆对象,理解对象的创建、属性和方法的访问至关重要。...
JavaScript原型继承是面向对象编程在JavaScript中的实现方式之一,它基于原型(Prototype)和对象的特性,使得一个对象可以继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个特殊的内部属性`[...
在 JavaScript 中,继承主要通过原型链(prototype chain)、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承等方法实现。以下是对这些继承方式的详细解释: 1. **原型链继承**:这是 JavaScript ...
通过以上分析,我们了解到JavaScript中基于原型的继承机制,它与传统基于类的继承有所不同,但仍然提供了实现代码复用和创建复杂对象层次结构的能力。掌握原型继承对于深入理解JavaScript对象模型和设计模式至关重要...
这种方法试图改进基于原型的继承,避免了使用`new`关键字和直接操作`prototype`。在第二种代码示例中,`pet`函数创建了一个包含私有变量`name`和公开方法`getDetails`的对象。`legs`在这里被保护,不允许直接修改。...
本文将深入探讨JavaScript继承的实现方式,以及其中的问题和解决方案。 首先,我们来看混合方式的实现,这种方式结合了原型链和对象冒充。在JavaScript中,构造函数是用于创建特定类型对象的函数。例如,`Employee`...
但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来一一说明下,在最后我根据自己的理解提出了一个关于继承比较完整的实现。
通过原型链,我们可以实现基于原型的继承;通过闭包,我们能够控制作用域和访问变量,提升代码的复用性。理解和掌握这些概念,将有助于编写更加高效、可维护的JavaScript代码。在实际编程中,灵活运用这些特性可以...
通过深入理解JavaScript中的原型和原型链,我们可以更好地设计面向对象的程序结构,实现更加灵活的继承和封装。掌握这些核心概念对于成为一名高效的JavaScript开发者至关重要。希望本文能够帮助读者更深刻地理解...
1. **基于原型**:JavaScript使用基于原型的继承,而不是像Java那样的类继承。 2. **自动内存管理**:它具有自动垃圾回收机制,帮助管理内存使用。 3. **动态类型**:JavaScript是一种动态类型语言,变量可以存储...
总结,JavaScript的继承机制通过原型和构造函数实现了对象间的代码重用。理解并熟练运用这些特性,可以帮助开发者创建出更加灵活和可扩展的代码结构,提高开发效率。在实践中,可以结合使用`inherits`和`method`等...
总的来说,JavaScript中的面向对象编程与传统的基于类的OOP有所不同,它通过原型链和构造函数来实现对象的创建和继承。正确理解并运用这些概念,可以让开发者更有效地利用JavaScript进行面向对象的编程。