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 相关文章推荐
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
Nov 11 Javascript
基于JavaScript 类的使用详解
May 07 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
Jul 02 Javascript
谈谈JavaScript异步函数发展历程
Sep 29 Javascript
Vue中自定义全局组件的实现方法
Dec 08 Javascript
JavaScript寄生组合式继承实例详解
Jan 06 Javascript
浅谈vue引入css,less遇到的坑和解决方法
Jan 20 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
Oct 23 Javascript
ionic3双击返回退出应用的方法
Sep 17 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
May 09 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 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自动加载的两种实现方法
2010/06/21 PHP
php页面防重复提交方法总结
2013/11/25 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
降低PHP Redis内存占用
2017/03/23 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
Python深入学习之上下文管理器
2014/08/31 Python
跟老齐学Python之集合(set)
2014/09/24 Python
Python的类实例属性访问规则探讨
2015/01/30 Python
python字符串连接方法分析
2016/04/12 Python
python实现单向链表详解
2018/02/08 Python
python requests 测试代理ip是否生效
2018/07/25 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
爱我中华教学反思
2014/04/28 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
车间主任岗位职责
2015/02/03 职场文书
你会写请假条吗?
2019/06/26 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android