`
name327
  • 浏览: 165206 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

js的继承工具函数

阅读更多

来自于这里,http://javascript.crockford.com/inheritance.html

这个可以为javascript继承提供很大的方便

目前还不知道有没有什么弊端

 

Function.prototype.method=function(name,fun){
			 this.prototype[name]=fun;
			 return this;
		 }
		 Function.method('inherits', function (parent) {
			    var d = {}, p = (this.prototype = new parent());
			    //这个方法可以用来调用被覆盖的父类方法
			    this.method('uber', function uber(name) {
			        if (!(name in d)) {
			            d[name] = 0;
			        }        
			        var f;//要执行的函数
			        var r;//函数的返回值
			        var t = d[name], v = parent.prototype;
			        if (t) {
			            while (t) {
			                v = v.constructor.prototype;
			                t -= 1;
			            }
			            f = v[name];
			        } else {
			            f = p[name];
			            if (f == this[name]) {
			                f = v[name];
			            }
			        }
			        d[name] += 1;
			        r = f.apply(this, Array.prototype.slice.apply(arguments,[1]));
			        d[name] -= 1;
			        return r;
			    });
			    return this;
			});
		 function Person(name){
			 this.name=name;
		 }
		 //给Person添加getName
		 Person.method("getName", function(o){
			return this.name;
		 });
		 function User(name,password){
			 this.name=name;
			 this.password=password;
		 };
		 //User继承Person
		 User.inherits(Person);
		 User.method("getPassword",function(){
			 alert(this.password);
		 });
		 //重写getName方法
		 User.method("getName",function(o){
			 //this.uber("getName")调用原始的getName方法,如果原始方法带参数则为this.uber("method",arg1,arg2,argN)
			 alert("My Name is "+this.uber("getName"));
		 });
		 var u=new User("张三",111111);
		 u.getPassword();
		 u.getName();

 如果有什么不对的 欢迎指出,

分享到:
评论

相关推荐

    javascript继承之工具函数二

    通过阅读这篇博文(链接已提供),我们可以学习如何构建自己的继承工具函数,并理解其工作原理。 在JavaScript中,常见的继承模式有原型链继承、构造函数继承、组合继承、寄生继承、原型式继承、委托继承等。这里...

    js定义类 对象 构造函数,类的继承

    类提供了创建对象的模板,对象是数据和行为的载体,而构造函数则是创建和初始化对象的工具。通过类的继承,我们可以复用代码,构建更复杂的软件结构。在实际开发中,理解并熟练运用这些概念对于编写高效、可维护的...

    javascript指南和函数式编程

    2. **对象和原型**:深入理解原型链,掌握构造函数、原型对象以及对象字面量的用法,了解如何创建和继承对象。 3. **数组和集合**:学习JavaScript中的数组操作,如map、filter、reduce等高阶函数的运用,以及Set和...

    JS 四种函数调用模式

    在 JS 中,有四种主要的函数调用模式,分别是:普通函数调用、方法调用、构造函数调用和apply/call调用。下面我们将详细探讨这些调用模式。 1. **普通函数调用**: 这是最常见的情况,函数作为一个独立的实体被执行...

    JavaScript实用小函数(一)

    7. **原型链与继承**: JavaScript通过原型实现继承,每个对象都有一个`__proto__`属性,指向创建它的构造函数的原型。继承是通过`prototype`对象和`Object.create()`方法实现的。 8. **多态**: 多态是指同一消息...

    QT和网页中的JavaScript函数进行相互调用的实现

    - 首先,创建一个继承自`QObject`的C++类,暴露槽函数给JavaScript。比如,创建一个`MyBackend`类: ```cpp class MyBackend : public QObject { Q_OBJECT public slots: void handleJsCall(const QString &...

    JS ES6箭头函数

    JavaScript ES6中的箭头函数是语言的一个重要更新,它提供了更简洁、更直观的语法来定义函数。在本文中,我们将深入探讨箭头函数的基本概念、语法特性、作用域规则以及与传统函数的区别。 ### 1. 箭头函数的基本...

    js压缩工具.zip

    "js压缩工具.zip"这个压缩包很可能包含了若干个用于压缩和优化JavaScript文件的工具。 1. 压缩工具的作用: - 减小文件大小:通过删除空格、换行和不必要的字符,JS压缩工具能显著减小文件体积,加快网页加载速度...

    javascript 继承派生

    在JavaScript中,面向对象编程是其核心特性之一,而继承和派生则是实现面向对象的重要机制。本资料集合关注的是JavaScript中的继承派生以及与之相关的`apply`和`call`方法。 **继承**是面向对象编程的关键概念,...

    JavaScript中函数对象调用模式总结

    JavaScript中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念...

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

    通过函数构造器、原型链以及`prototype.js`文件中可能提供的类和继承工具,我们可以创建复杂的对象结构和组织代码。理解并掌握这些概念有助于提升JavaScript编程能力,更好地适应现代Web开发的需求。

    JavaScript学习之三 — JavaScript实现继承的7种方式

    组合继承结合了构造函数和原型链继承,子类先调用父类构造函数来初始化属性,再通过原型链继承父类的方法。这种方式解决了前两者的问题,但存在性能损耗,因为父类构造函数会被调用两次。 5. 原型委托继承...

    JS 函数的三种声明方式

    本篇文章将深入探讨JS函数的三种声明方式:函数声明、函数表达式以及箭头函数。 1. **函数声明** 函数声明是最常见的方式,它以`function`关键字开头,后跟函数名,然后是参数列表,最后是函数体。例如: ```...

    js函数扩展

    "js函数扩展"这个主题深入探讨了如何利用JavaScript的特性来增强和优化函数的使用。这篇博客文章(链接:https://ninnd.iteye.com/blog/1168733)可能涵盖了诸如函数柯里化、高阶函数、闭包、以及箭头函数等高级概念...

    JavaScript函数的特性与应用实践深入详解

    事件驱动编程中,回调函数是处理异步操作的重要工具。使用匿名函数可以简化代码,提升开发效率。此外,递归函数在处理具有自相似结构的问题时非常有效,但需要注意避免无限递归导致的栈溢出错误。 在使用函数时需要...

    JavaScript继承的特性与实践应用深入详解

    下面将深入探讨JavaScript继承的特性及其实践应用。 1. 伪类继承: JavaScript 的继承机制不直接实现对象间的继承,而是通过构造函数创建对象,并利用`prototype`属性来实现。当一个函数被创建时,它的`prototype`...

    javascript(函数查询chm+语法pdf)

    3. **基于原型(Prototype-based)**:JavaScript 使用原型继承,对象可以继承其他对象的属性和方法。 4. **事件驱动(Event-driven)**:JavaScript 可以通过监听和处理用户或系统的事件来实现交互性。 5. **函数...

    java script 继承的实现

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

    JavaScript实现继承的几种方式

    组合继承结合了原型链继承和构造函数继承的优点,避免了父类构造函数被多次调用的问题。它首先通过构造函数复制属性,然后通过原型链继承方法。 ```javascript function Parent(name) { this.name = name; } ...

    js 实现类式继承

    在JavaScript中,实现类式继承是面向对象编程中的一个关键概念。JavaScript本身是一种基于原型的动态类型语言,但在ES6引入了`class`语法糖,使得类的概念更加清晰,但其实质仍然是基于原型的继承。下面我们将深入...

Global site tag (gtag.js) - Google Analytics