权威指南第九章真心很给力,精彩啊,抽出了这个小例子
//对象复制公用方法
function inherit(p){
if(p == null)
throw TypeError();
if(Object.create)
return Object.create(p);
var t = typeof p;
if(t!=="object" && t!== "function")
throw TypeError();
function f(){
}
f.prototype = p;
return new f();
}
//属性继承公用方法
function extend(o,p){
for(prop in p){
o[prop] = p[prop];
}
return o;
}
//
//superclass 父类 constructor 子类构造 methods 子类方法覆盖 statics子类静态属性覆盖
function defineSubclass(superclass,constructor,methods,statics){
//js 继承的最关键的两句代码
//1.子类的原型为 父类的原型示例
constructor.prototype = inherit(superclass);
//2.子类的构造类改回是它自己 而不是父类
constructor.prototype.constructor = constructor;
//复制方法和属性
if(methods) extend(constructor.prototype,methods);
if(statics) extend(constructor.prototype,statics);
return constructor;
}
//Function扩展
Function.prototype.extend = function(constructor,methods,statics){
return defineSubclass(this,constructor,methods,statics);
}
//创建父对象
function Set(){
this.values = {};
this.n = 0;
}
//有个私有方法
Set.fromArr = function(){
alert(1);
}
//开始创建子类
var SingletSet = Set.extend(function(value){//子类构造函数
this.value = value;
},{
fromArr : function(){//重写父类方法
alert(2);
},
fromXml : function(){//定义新方法
alert(3);
}
});
//调用
var a = new SingletSet("value");
console.log(a.value);
a.fromArr();
a.fromXml();
分享到:
相关推荐
在真正的Web站点和应用程序中,几乎不可能创建名为ClassA和ClassB的类,更可能的是创建表示特定事物(如形状)的类。考虑本章开头所述的形状的例子,Polygon、Triangle和Rectangle类就构成了一组很好的探讨数据。
JavaScript继承的三种方法实例 继承 继承: 首先继承是一种关系,类(class)与类之间的关系,JS中没有类,但是可以通过构造函数模拟类,然后通过原型来实现继承。 继承也是为了数据共享,js中的继承也是为了实现...
主要介绍了JavaScript使用prototype属性实现继承操作,结合实例形式详细分析了JavaScript使用prototype属性实现继承的相关原理、实现方法与操作注意事项,需要的朋友可以参考下
Javascript是一种由Netscape的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,
目录 前言准备总结继承的n种方式原型式继承原型链式继承借用构造函数(类式继承)组合继承寄生组合式继承结束语 前言 准备 总结 继承的n种方式 原型式继承原型链式继承借用构造函数(类式继承)组合继承寄生组合...
具体js继承是干啥呢,刚开始做前端的时候我是用来面试的(最早写些小效果的时候基本用不到,为啥要看呢,因为面试官很爱问这个问题啊),所以就看看大概的,面试时候能说个大概,在这个问题上算是面试党了。...
面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++、... 这里面有一些有趣的特性,比如JavaScript中所有事物都是对象, 包括字符串、数组、日期、数字,甚至是函数,比如下面这个例子: var doc; //
面向对象与基于对象 几乎每个开发人员都有面向对象语言... 这里面就有一些有趣的特性,比如JavaScript中所有事物都是对象, 包括字符串、数组、日期、数字,甚至是函数,比如下面这个例子: // 定义一个函数 – add
Quiz1 Javascript真的需要类(Class)么? 我们首先先看下其他有类(Class)的面向对象语言(如:Java)的一些特性。 父类与子类 父类(Superclass)和子类(Subclass),并不是为了解决父亲与儿子的问题,而是为了...
9.3 JavaScript中Java式的类继承 9.4 类的扩充 9.5 类和类型 9.6 JavaScript中的面向对象技术 9.7 子类 9.8 ECMAScript 5 中的类 9.9 模块 第10章 正则表达式的模式匹配 10.1 正则表达式的定义 10.2 用于模式匹配的...
Blob是一个类文件的不可变的原始数据对象,非javascript原生数据类型,File对象就是继承自Blob对象,且在Blob的基础上进行扩展,以便支持用户系统上的文件。 前言 最近在做以post请求方式导出excel时,想到了可以...
面向对象与基于对象 几乎每个开发人员都有面向对象语言... 这里面就有一些有趣的特性,比如JavaScript中所有事物都是对象, 包括字符串、数组、日期、数字,甚至是函数,比如下面这个例子: // 定义一个函数 – add
面向对象与基于对象 几乎每个开发人员都有面向对象语言... 这里面就有一些有趣的特性,比如JavaScript中所有事物都是对象, 包括字符串、数组、日期、数字,甚至是函数,比如下面这个例子: // 定义一个函数 - add f
5.8 JavaScript语句小结116 第6章 对象118 6.1 创建对象120 6.2 属性的查询和设置123 6.3 删除属性127 6.4 检测属性128 6.5 枚举属性130 6.6 属性getter和setter132 6.7 属性的特性134 6.8 对象...
温馨提示:想要更好的理解JS继承方式,须了解构造函数、原型对象、实例化对象、原型链等概念 第一种:原型链继承 利用原型链的特点进行继承 function Parent(){ this.name = 'web前端';...以上例子解释: ①创
9.3 JavaScript中Java式的类继承 9.4 类的扩充 9.5 类和类型 9.6 JavaScript中的面向对象技术 9.7 子类 9.8 ECMAScript 5 中的类 9.9 模块 第10章 正则表达式的模式匹配 10.1 正则表达式的定义 10.2 用于模式匹配的...
说明继承机制最简单的方法是,利用一个经典的例子——几何形状。
9.3 javascript中java式的类继承 207 9.4 类的扩充 210 9.5 类和类型 212 9.6 javascript中的面向对象技术 217 9.7 子类 230 9.8 ecmascript 5 中的类 239 9.9 模块 248 第10章 正则表达式的模式匹配 253 10.1 正则...