`
name327
  • 浏览: 163075 次
  • 性别: 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继承之工具函数二

    NULL 博文链接:https://snandy.iteye.com/blog/429140

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

    NULL 博文链接:https://wenzongliang.iteye.com/blog/2163551

    《JavaScript语言精髓与编程实践》精选版--动态函数式语言精粹

    确切地说,作者并非是想讨论JavaScript作为一种语言工具的用法或特性,更多地是希望用一种简洁的语言来讨论动态语言、函数式语言。而为了给这些语言范型以参照,以及讲述多范型如何“杂凑”在一起,也讨论了...

    inherits.js:Backbone的扩展启发式独立继承工具

    受到的extend方法的启发,Inherits.js是另一个继承工具。 它使用从父级链接的原型以及扩展的父级的静态属性创建子级构造函数。 入门 Inherits.js与任何模块环境(AMD,CJS)兼容,或者与浏览器中的全局函数兼容...

    js 实现类式继承

    NULL 博文链接:https://wurui-0.iteye.com/blog/2000177

    Node.js常用工具之util模块

    util是一个Node.js的核心工具模块,提供常用的函数,用于弥补核心JavaScript提供的函数过于精简的问题。下面话不多说,一起来看看详细的介绍,文中介绍的非常详细,对大家具有一定的参考价值。 util.inherits uitl....

    trope:面向对象的 JS 适合所有人 - 充分利用 JavaScript 原型和附加功能(私有状态、多重继承和超级函数)

    比喻.js概述Trope 是一个简单的 JavaScript 继承接口,提供了一些额外的、有用的功能。 该工具的核心是用于维护、允许访问以及创建具有对象的原型。 开始与大多数项目集成很容易,因为构造函数、对象原型和 ES6 类...

    深入理解JavaScript系列

    第3部分深入探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新...

    JavaScript详解(第2版)

     13.7.4 将事件传递给JavaScript函数   13.7.5 鼠标坐标   13.7.6 按键事件   13.8 处理事件的脚本模型   13.9 应知应会   练习   第14章 CSS与JavaScript   14.1 什么是CSS   14.2 什么是...

    JavaScript权威指南(第6版)

    19.7 工具函数 19.8 jQuery选择器和选取方法 19.9 jQuery的插件扩展 19.10 jQuery UI类库 第20章 客户端存储 20.1 localStorage和sessionStorage 20.2 cookie 20.3 利用IE userData持久化数据 20.4 应用程序存储和...

    JavaScript模式【英文版】.pdf

    如果您是一名有经验的开发者,正在寻找与对象、函数、继承以及其他特定语言分类,那么本书中的抽象方案和代码模板将是十分理想的指南,无论您正在使用Javascript编写客户端、服务端,抑或是桌面应用程序。...

    JavaScript权威指南(第6版)(中文版)

    19.7 工具函数 19.8 jQuery选择器和选取方法 19.9 jQuery的插件扩展 19.10 jQuery UI类库 第20章 客户端存储 20.1 localStorage和sessionStorage 20.2 cookie 20.3 利用IE userData持久化数据 20.4 应用程序存储和...

    Node.js 开发指南.pdf

    3.1.2 Node.js命令行工具 25 3.1.3 建立HTTP服务器 26 3.2 异步式I/O与事件式编程 29 3.2.1 阻塞与线程 29 3.2.2 回调函数 31 3.2.3 事件 33 3.3 模块和包 34 3.3.1 什么是模块 35 3.3.2 创建及...

    JavaScript权威指南(第6版)中文文字版

    19.7 工具函数 563 19.8 jquery选择器和选取方法 566 19.9 jquery的插件扩展 574 19.10 jquery ui类库 577 第20章 客户端存储 579 20.1 localstorage和sessionstorage 581 20.2 cookie 586 20.3 利用ie userdata持久...

    编写可维护的JavaScript(中文)

    《编写可维护的JavaScript》向开发人员阐述了如何在团队开发中编写具备高可维护性的JavaScript代码,书中详细说明了作为团队一分子,应该怎么写JavaScript。本书内容涵盖了编码风格、编程...附录B JavaScript工具集

    WebGIS从基础到开发实践代码(基于ArcGIS API for JavaScript)

    2.4.2函数也是对象 2.4.3模拟类与继承 2.4.4使用模块与包管理源代码 第3章页面布局设计 3.1使用布局小部件设计页面框架 3.1.1小部件与布局小部件简介 3.1.2使用面板组织页面元素 3.1.3使用容器小部件设计页面布局 ...

    JavaScript权威指南(第六版) 清晰-完整

    19.7 工具函数 19.8 jQuery选择器和选取方法 19.9 jQuery的插件扩展 19.10 jQuery UI类库 第20章 客户端存储 20.1 localStorage和sessionStorage 20.2 cookie 20.3 利用IE userData持久化数据 20.4 应用程序存储和...

Global site tag (gtag.js) - Google Analytics