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 相关文章推荐
js no-repeat写法 背景不重复
Mar 18 Javascript
ExtJS Window 最小化的一种方法
Nov 18 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
Apr 24 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
jquery实现通用版鼠标经过淡入淡出效果
Jun 15 Javascript
JavaScript学习心得之概述
Jan 20 Javascript
Flash图片上传组件 swfupload使用指南
Mar 14 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
Jul 18 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 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
WHOIS类的修改版
2006/10/09 PHP
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
python实现八大排序算法(1)
2017/09/14 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
python 进程的几种创建方式详解
2019/08/29 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
实习生自我鉴定范文
2013/12/05 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
十八大报告观后感
2014/01/28 职场文书
触摸春天教学反思
2014/02/03 职场文书
物流专业自荐信
2014/05/23 职场文书
新员工试用期自我评价
2015/03/10 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android