`
radar
  • 浏览: 28345 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

Re: javascript中基于原型法直接实现继承中的一个陷阱和解决

    博客分类:
  • ajax
阅读更多
<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>
分享到:
评论
1 楼 colinkyo 2008-12-29  
var superClass = arguments[0];  
        var proto = new superClass(Class.isPrototype);  
这是什么意思?

相关推荐

    浅析JavaScript实现基于原型对象的“继承”.pdf

    通过对JavaScript的原型继承机制的介绍和实例分析,提出一个改进的“寄生组合模式”,使读者能够更好地理解和应用JavaScript的原型继承。 概述 JavaScript是一门面向Web的编程语言,具有高端、动态以及面向对象的...

    JavaScript中基于原型的继承的实现与分析.pdf

    JavaScript中基于原型的继承的实现与分析.pdf

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

    在JavaScript中,对象可以直接从另一个对象继承属性和方法,这主要是通过原型链(prototype chain)来实现的。 首先,每个函数都有一个`prototype`属性,这个属性是一个对象,当通过该函数创建新对象时,新对象会...

    JavaScript中的原型和继承详解(图文)_.docx

    JavaScript 中的原型和继承详解 在 JavaScript 中,原型和继承是两个非常重要的概念。这篇文章将详细解释 JavaScript 中的原型和继承机制,并通过图文方式帮助读者更好地理解这些概念。 一、对象和类 在 ...

    javascript 原型模式实现OOP的再研究

    JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...

    学习javascript面向对象 javascript实现继承的方式

    在JavaScript中,面向对象编程是通过构造函数、原型链和继承实现的。继承是面向对象编程的核心概念之一,它允许我们创建一个新对象,该对象继承现有对象的属性和方法。在JavaScript中,实现继承有多种方式,每种方式...

    JSON的魔力:JavaScript中的JSON使用全指南

    3. **基于原型**:JavaScript使用基于原型的继承,而不是基于类。 4. **自动内存管理**:具有垃圾回收机制,自动回收不再使用的对象所占用的内存。 5. **动态类型**:变量的类型在运行时确定,不需要事先声明。 6. *...

    JavaScript实现继承的几种方式

    寄生组合继承解决了组合继承中父类构造函数会被调用两次的问题,通过创建父类的一个不被使用的实例,然后将子类的原型指向这个实例的原型。 ```javascript function inheritPrototype(subType, superType) { let ...

    一套基于纯js实现的JavaScript典型应用技巧例子源码

    闭包是JavaScript中的一个高级特性,允许函数访问并操作其外部作用域的变量,即使在其外部作用域已经结束时也是如此。 3. **对象与原型链**:JavaScript的万物皆对象,理解对象的创建、属性和方法的访问至关重要。...

    Javascript原型继承

    JavaScript原型继承是面向对象编程在JavaScript中的实现方式之一,它基于原型(Prototype)和对象的特性,使得一个对象可以继承另一个对象的属性和方法。在JavaScript中,每个对象都有一个特殊的内部属性`[...

    java script 继承的实现

    在 JavaScript 中,继承主要通过原型链(prototype chain)、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承等方法实现。以下是对这些继承方式的详细解释: 1. **原型链继承**:这是 JavaScript ...

    浅析Javascript原型继承 推荐第1/2页

    通过以上分析,我们了解到JavaScript中基于原型的继承机制,它与传统基于类的继承有所不同,但仍然提供了实现代码复用和创建复杂对象层次结构的能力。掌握原型继承对于深入理解JavaScript对象模型和设计模式至关重要...

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

    因为继承时是通过子类原型指向超类的一个实例来实现的,无法在这个过程中向超类的构造函数传参。如果需要在创建子类实例时向超类构造函数传参,则可能需要使用其他方法,比如组合继承(将原型链继承和借用构造函数...

    javascript原型继承工作原理和实例详解_.docx

    在JavaScript中,每个对象都有一个特殊的属性`__proto__`,这个属性指向该对象的原型对象。当我们试图访问一个对象的某个属性或方法时,如果该对象本身没有这个属性或方法,JavaScript引擎会沿着原型链向上查找,...

    javascript的prototype继承

    JavaScript的原型继承是其面向对象编程的一大特性,它基于原型链机制实现,允许一个对象可以从另一个对象继承属性和方法。这种继承方式不同于类继承,而是通过将子类的原型对象设置为父类的一个实例来实现。 在...

    详解Javascript继承的实现

    本文将深入探讨JavaScript继承的实现方式,以及其中的问题和解决方案。 首先,我们来看混合方式的实现,这种方式结合了原型链和对象冒充。在JavaScript中,构造函数是用于创建特定类型对象的函数。例如,`Employee`...

    再谈javascript原型继承

    但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来一一说明下,在最后我根据自己的理解提出了一个关于继承比较完整的实现。

    js高端系列教程(26)——JavaScript探秘:强大的原型和原型链.docx

    通过深入理解JavaScript中的原型和原型链,我们可以更好地设计面向对象的程序结构,实现更加灵活的继承和封装。掌握这些核心概念对于成为一名高效的JavaScript开发者至关重要。希望本文能够帮助读者更深刻地理解...

    JavaScript面向对象继承详解

    5. **寄生组合继承**:结合寄生继承和组合继承,避免了冗余的构造函数调用,通常被认为是JavaScript中实现继承的最佳实践。 6. **ES6的类继承**:ES6引入了`class`语法糖,使得JavaScript的继承看起来更像传统的...

Global site tag (gtag.js) - Google Analytics