js封装可使用的构造函数继承用法分析


Posted in Javascript onJanuary 28, 2015

本文实例讲述了js封装可使用的构造函数继承用法。分享给大家供大家参考。具体如下:

先来看下面这段代码

(YUI)库所用的方法:

function extend(Child, Parent) {


var F = function(){};


F.prototype = Parent.prototype;


Child.prototype = new F();


Child.prototype.constructor = Child;


Child.uber = Parent.prototype;

}

另外还有一种拷贝继承方法,属性拷贝:

这种方法与之前的不同,由于已经完成对child的原型进行扩展,不需要再重置child.prototype.constructor属性了,因为它不会再被覆盖。

与之前的方法相比,这个方法在效率上显然略孙一筹。因为这里执行的是对子对象原型的逐一拷贝。而非简单的原型链查询。

这种方式仅适用只包含基本数据类型的对象,所有的对象类型包括函数和数组,都是不可复制的,他们只支持引用传递。

function extend2(Child, Parent) {

var p = Parent.prototype;


var c = Child.prototype;


for (var i in p) {



c[i] = p[i];



}


c.uber = p;

}

var Shape = function(){}

var TwoDShape = function(){}

Shape.prototype.name = 'shape';

Shape.prototype.toString = function(){

 return this.name;

}

extend2(TwoDShape,Shape);

var t = new TwoDShape();

t.name

//-->"shape"

t.toString();

//-->"shape"

TwoDShape.prototype.name = 'TwoDShape';

t.name

//-->"2d shape"

t.toString();

//-->"2d shape"
TwoDShape.prototype.toString === Shape.prototype.toString

//-->true

TwoDShape.prototype.name === Shape.prototype.name

//-->false

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
ExtJS下grid的一些属性说明
Dec 13 Javascript
js 如何实现对数据库的增删改查
Nov 23 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
Mar 02 Javascript
js运动动画的八个知识点
Mar 12 Javascript
JavaScript通过字典进行字符串翻译转换的方法
Mar 19 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 Javascript
利用Js+Css实现折纸动态导航效果实例源码
Jan 25 Javascript
Vue单文件组件基础模板小结
Aug 10 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
Aug 05 Javascript
JavaScript中MutationObServer监听DOM元素详情
Nov 27 Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 #Javascript
javascript原型链继承用法实例分析
Jan 28 #Javascript
Jquery 实现图片轮换
Jan 28 #Javascript
javascript查询字符串参数的方法
Jan 28 #Javascript
Jquery 实现弹出层插件
Jan 28 #Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 #Javascript
Jquery 实现table样式的设定
Jan 28 #Javascript
You might like
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
PHP学习 变量使用总结
2011/03/24 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
js 通用订单代码
2013/12/23 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
使用jQuery实现返回顶部
2015/01/26 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
关于Assembly命名空间的三个面试题
2015/07/23 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
加油口号大全
2014/06/13 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
Redis主从复制操作和配置详情
2022/09/23 Redis