javascript 面向对象继承
//为Object类添加静态方法:extend
Object.extend = function(destination, source) {
for(property in source) {
destination[property] = source[property];
}
return destination;
}
//通过Object类为每个对象添加方法extend
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
Object.extend方法很容易理解,它是Object类的一个静态方法,用于将参数中source的所有属性都赋值到destination对象中,并返回destination的引用。下面解释一下Object.prototype.extend的实现,因为Object是所有对象的基类,所以这里是为所有的对象都添加一个extend方法,函数体中的语句如下:
Object.extend.apply(this,[this,object]);
这一句是将Object类的静态方法作为对象的方法运行,第一个参数this是指向对象实例自身;第二个参数是一个数组,包括两个元素:对象本身和传进来的对象参数object。函数功能是将参数对象object的所有属性和方法赋值给调用该方法的对象自身,并返回自身的引用。有了这个方法,下面看类继承的实现:
代码如下:
<script language="JavaScript" type="text/javascript">
<!--
//定义extend方法
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}
//定义class1
function class1(){
//构造函数
}
//定义类class1的成员
class1.prototype={
method:function(){
alert("class1");
},
method2:function(){
alert("method2");
}
}
//定义class2
function class2(){
//构造函数
}
//让class2继承于class1并定义新成员
class2.prototype=(new class1()).extend({
method:function(){
alert("class2");
}
});
//创建两个实例
var obj1=new class1();
var obj2=new class2();
//试验obj1和obj2的方法
obj1.method();
obj2.method();
obj1.method2();
obj2.method2();
//-->
</script>
从运行结果可以看出,继承被正确的实现了,而且派生类的额外成员也可以以列表的形式加以定义.
相关推荐
-
由JavaScript中call()方法引发的对面向对象继承机制call的思考
起因: 今天在阅读snandy大神的读jQuery之五(取DOM元素)时,看到有讲到toArray()方法,具体jQuery代码如下: 复制代码 代码如下: toArray: function() { return slice.call( this, 0 ); }, get: function( num ) { return num == null ? // Return a 'clean' array this.toArray() : // Return just the object ( n
-
javaScript面向对象继承方法经典实现
JavaScript的出现已经将近20多年了,但是对这个预言的褒贬还是众说纷纭.很多人都说JavaScript不能算是面向对象的变成语言.但是JavaScript的类型非常松散,也没有编译器.这样一来给了程序员很大的自由,也带来了一些缺陷. 虽然JavaScript不算是一门面向对象的语言.但是我们可以模仿着其他语言实现面向对象的方式来实现JavaScript的面向编程. 下面是JavaScript教程中非常经典的继承方法. 复制代码 代码如下: //定义一个Pet对象.通过这一个名称和数量的腿
-
JavaScript 创建对象
第一种:JSON方式/对象直接量 格式: var 对象名 = { 变量1: 变量1的值, 变量1: 变量1的值, --, 函数1: function() { 函数体 }, 函数2: function() { 函数体 }//Note:最后的逗号要去除为了和IE兼容. }; 说明: (1) 大括号内直接填写变量或者函数: (2) 对象的内容与值以冒号分隔,成对出现: (3) 包含的变量或者函数之间以逗号分隔: (4) 函数需要写在function(){}的大括号之内. 例子: var 对象名 = {
-
javascript创建对象、对象继承的实用方式详解
本文约定:不特殊声明的情况下,属性代指属性或方法. 创建对象.对象继承实际上是一回事:我们所需要的实例对象通过构造函数获得私有属性.通过原型链获得共享的属性.什么是好的方式?私有属性通过构造函数的方式获得(不考虑实例中自定义私有属性)且不需要重写,共享属性通过原型链找到且不需要重复创建. 普适的方式 组合使用构造函数模式和原型模式创建对象 function HNU_student(name) { this.name = name; this.sayName = function() { retu
-
JavaScript创建对象的写法
对象是什么从JavaScript定义上讲对象是无序属性的集合,其属性可以包含基本值.对象或函数.也就是说对象是一组没有特定顺序的属性,每个属性会映射到一个值上,是一组键值对,值可以是数据或对象. 最简单的对象JavaScript的一对花括号{}就可以定义一个对象,这样的写法实际上和调用Object的构造函数一样 复制代码 代码如下: var obj={};var obj2=new Object(); 这样构建出来的对象仅仅包含一个指向Object的prototype的指针,可以使用一些value
-
js对象继承之原型链继承实例
本文实例讲述了js对象继承之原型链继承的用法.分享给大家供大家参考.具体分析如下: 复制代码 代码如下: <script type="text/javascript"> //定义猫的对象 var kitty = {color:'yellow',bark:function(){alert('喵喵');},climb:function(){alert('我会爬树')}}; //老虎对象的构造函数 function tiger(){ this.color = "ye
-
js中创建对象的几种方式示例介绍
JavaScript中的所有事物都是对象:字符串.数组.数值.函数等.JS中并没有类的概念, 但我们可以利用JS的语法特征,以类的思想来创建对象. 原始方法 复制代码 代码如下: <script type="text/javascript"> var obj = new Object(); obj.name = "Koji"; //为对象添加属性 obj.age = 21; obj.showName = function(){ //为对象添加方法 ale
-
JS 创建对象(常见的几种方法)
贴个代码先: function O(user,pwd){ //use constructor this.user=user; this.pwd=pwd; this.get=get; return this; } function O2(user,pwd){ //use factory var obj=new Object(); obj.user=user; obj.pwd=pwd; obj.get=get; return obj; } function O3(){ //use prototype
-
JavaScript 三种创建对象的方法
JavaScript中对象的创建有以下几种方式: (1)使用内置对象 (2)使用JSON符号 (3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种: 1,JavaScript语言原生对象(语言级对象),如String.Object.Function等: 2,JavaScript运行期的宿主对象(环境宿主级对象),如window.document.body等. 我们所说的使用内置对象,是指通过JavaScript语言原生对象的构造方法,实例化出一个新的对象.如: 复
-
JavaScript面向对象继承原理与实现方法分析
本文实例讲述了JavaScript面向对象继承原理与实现方法.分享给大家供大家参考,具体如下: 1.构造函数.原型和实例的关系 构造函数有一个原型属性prototype指向一个原型对象. 原型对象包含一个指向构造函数的指针constructor . 实例包含一个指向原型对象的内部指针[[prototype]] . 2.通过原型链实现继承 基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法,子类型可以访问超类型的所有属性和方法.原型链的构建是将一个类型的实例赋值给另一个构造函数的原型实
-
浅谈JavaScript面向对象--继承
一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之间的"复制粘贴" 第一条路是通过构造函数来继承,这可以理解为子类直接复制了父类构造函数的代码,然后按照一定的规矩"粘贴"在自己的构造函数中,为己所用.举个例子: 如果A要继承B的属性,是不是直接把this.name = name复制粘贴到A函数就可以了?简单粗暴. 所以在A中,直接执行B函数,不就等于执行了this.name = n
-
javascript 面向对象继承
在prototype框架中的类继承实现机制 复制代码 代码如下: //为Object类添加静态方法:extend Object.extend = function(destination, source) { for(property in source) { destination[property] = source[property]; } return destination; } //通过Object类为每个对象添加方法extend Object.prototype.extend =
-
Javascript 面向对象 继承
在JavaScript中实现继承可以有多种方法,下面说两种常见的. 一,call 继承,先看代码: 先定义一个"人"类 复制代码 代码如下: //人类 Person=function(){ this.name="草泥马"; this.eat=function(){ alert("我要吃饭"); } this.sleep=function(){ alert("我要睡觉"); } } 再定义一个学生类,让它继承于Person 复制
-
javascript 面向对象,实现namespace,class,继承,重载
由于组里项目大多的javascript,css等客户端工作是另一同事在负责,该同事又特忙无法重构,老大也就只是提建议并未立即实施重构.但是我前些日子也改过些许客户端的小bug,确实那代码看得让人有些云里雾里,不知身在哪山,轻易不敢动代码,于是就自己动手鼓捣起我曾又爱又恨的javascript来,自己写一个简单的js实现namespace,继承,重载等面向对象的特性.欢迎拍砖灌水 .定义namespace Namesapce.js 复制代码 代码如下: Namespace = new Object
-
javascript 面向对象全新理练之继承与多态
1 又是几个基本概念 为什么要说又呢? 在讨论继承时,我们已经列出了一些基本概念了,那些概念是跟封装密切相关的概念,今天我们要讨论的基本概念,主要是跟继承与多态相关的,但是它们跟封装也有一些联系. 1.1 定义和赋值 变量定义是指用 var a; 这种形式来声明变量. 函数定义是指用 function a(...) {...} 这种形式来声明函数. var a = 1; 是两个过程.第一个过程是定义变量 a,第二个过程是给变量 a 赋值. 同样 var a = function(...) {};
-
javascript 面向对象封装与继承
整理一下js面向对象中的封装和继承. 1.封装 js中封装有很多种实现方式,这里列出常用的几种. 1.1 原始模式生成对象 直接将我们的成员写入对象中,用函数返回. 缺点:很难看出是一个模式出来的实例. 代码: 复制代码 代码如下: function Stu(name, score) { return { name: name, score: score } }
-
javascript面向对象之Javascript 继承
上几节讲了 JavaScript 面向对象之命名空间 . javascript 面向对象的JavaScript类 . JavaScript 面向对象的之私有成员和公开成员 与 Javascript 面向对象之重载,大家可以先看上面的再继续往下看. 在JavaScript中实现继承可以有多种方法,下面说两种常见的. 一,call 继承,先看代码: 先定义一个"人"类 复制代码 代码如下: //人类 Person=function(){ this.name="草泥马";
-
javascript面向对象三大特征之继承实例详解
本文实例讲述了javascript面向对象三大特征之继承.分享给大家供大家参考,具体如下: 继承 在JavaScript中的继承的实质就是子代可以拥有父代公开的一些属性和方法,在js编程时,我们一般将相同的属性放到父类中,然后在子类定义自己独特的属性,这样的好处是减少代码重复.继承是面向对象的基础,是代码重用的一种重要机制. --此文整理自 <jQuery 开发从入门到精通> ,这是本好书,讲的很详细,建议购买阅读. 继承的作用 实现继承的主要作用是: ① 子类实例可以共享超类属性和方法. ②
随机推荐
- 用hta做的好玩的小程序(固定在桌面)
- json格式化/压缩工具 Chrome插件扩展版
- js另类写法
- 简单理解vue中track-by属性
- Node.js中Request模块处理HTTP协议请求的基本使用教程
- java 数据结构单链表的实现
- VMware搭建虚拟机服务器
- 解析js如何获取当前url中的参数值并复制给input
- php去除html标记的原生函数详解
- 检测codeigniter脚本消耗内存情况的方法
- session 加入redis的实现代码
- javascript asp教程第十课--global asa
- Android编程之短信列表的时间显示实例分析
- Javascript表格翻页效果的具体实现
- 浅谈Node.js ORM框架Sequlize之表间关系
- php第一次无法获取cookie问题处理
- Android+Html5混合开发仿微信朋友圈
- 批处理备份文件夹和文件后发布文件夹至网站
- 用js计算页面执行时间的函数
- Android获取应用程序名称(ApplicationName)示例