JavaScript的写类方式(4)——转
转自:http://www.cnblogs.com/snandy/archive/2011/03/07/1973241.html
工具函数如下
01
|
/**
|
02
|
* $class 写类工具函数之三
|
03
|
* @param {String} className
|
04
|
* @param {Function} superClass
|
05
|
* @param {Function} classImp
|
06
|
*/
|
07
|
function $class(className, superClass, classImp){
|
08
|
if (superClass === "" ) superClass = Object;
|
09
|
|
10
|
function clazz(){
|
11
|
if ( typeof this .init == "function" ){
|
12
|
this .init.apply( this , arguments);
|
13
|
}
|
14
|
}
|
15
|
|
16
|
var p = clazz.prototype = new superClass();
|
17
|
var _super = superClass.prototype;
|
18
|
window[className] = clazz;
|
19
|
classImp.apply(p, [_super]);
|
20
|
}
|
定义一个Person类
01
|
$class( 'Person' , '' , function (){
|
02
|
// 构造函数
|
03
|
this .init = function (name){
|
04
|
this .name = name;
|
05
|
};
|
06
|
// 方法体
|
07
|
this .getName = function (){
|
08
|
return this .name;
|
09
|
};
|
10
|
this .setName = function (name){
|
11
|
this .name = name;
|
12
|
};
|
13
|
});
|
创建对象看看
1
|
var p = new Person( 'Jack' );
|
2
|
console.log(p);
|
3
|
console.log(p.constructor == Person); // false
|
使用该工具函数写类需注意,this.init方法必不可少。使用过Prototype库的同学会知道Class.create后的initialize方法也是必不可少的。
因为没考虑继承,第二个参数superClass使用空字符串,即默认继承于Object。
从输出为false可看到,这个工具类没有去维护constructor属性。 设计的每一种写类方式都是有取舍的,这完全取决于设计者的意图。
转载于:https://www.cnblogs.com/beijia/archive/2011/11/08/js-oo.html
JavaScript的写类方式(4)——转相关推荐
- Backbone的写类方式
从两个角度去讨论Backbone的写类方式 Backbone内部的写类方式,Backbone自身的类如Model.Collection.View等是如何定义的 Backbone外部的写类方式,如何使用 ...
- 在JavaScript里写类层次结构?别那么做!
从理论上讲,JavaScript并没有类.在实践中,下面的代码片段被广泛认为是JavaScript"类"的一个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...
- JavaScript中实现私有属性的写类方式(2)
上一篇写了个工具函数$class,这篇再完善以下.实现以下功能 1,继承 2,子类继承父类时,不继承父类的私有属性 /*** @param {String} className* @param {St ...
- Javascript脚本运行的方式(js写在页面什么地方)
1.脚本写在函数里,body标签里加onload这个函数,意为body加载完成执行函数func.代码如下: <script type="text/javascript"> ...
- JavaScript面向对象:类、方法、属性
JavaScript是一种基于对象的语言,与传统面向对象语言(C#.C++)相比,JavaScript中没有类的概念,其继承有两种基本形式:基于对象的继承和基于类型的继承(原型链继承).无论哪种形式的 ...
- JavaScript判断数据类型的方式
JavaScript判断数据类型的方式 js中的数据类型有哪些? 基本数据类型:number.string.boolean.null.undefined.symbol以及未来ES10新增的BigInt ...
- VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...
- javascript tab切换类LixTabs最新版
javascript Tab切换类LixTabs,更新至0.5版: 受snandy的"读jquery"系列的启发,改进了代码,现在调用LixTabs时不用加new了.即可以这样写: ...
- Javascript基础与面向对象基础~第四讲 Javascript中的类对象
今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...
最新文章
- service 与chkconfig
- 【剑指offer-Java版】06重建二叉树
- unicode 版本 delphi (如XE2)的 TBytes 转换为 AnsiString
- linux共享库 == windows动态库
- scanf函数使用遇到的问题
- Linux分支代码必须公开吗,linux – 当拉出不同的分支时,让“git pull”请求确认...
- IOS 控件 - 去除 tableView 多余的横线
- android后台自播放音乐,Android实现后台播放音乐(Service方式)
- Java并发编程--理解ThreadLocal
- 给你1分钟,回答下RabbitMQ如何保证消息不丢?
- 干了三年的Java,你竟然还不会MySQL性能优化
- Java基础:介绍访问控制
- asp.net中如何退出整个框架(frameset ),回到登录界面?
- PSD网页切图制作HTML全过程教程
- php开发h5游戏教程,HTML5游戏框架cnGameJS开发实录-实现动画原理
- 空降到一个公司做高管,怎么打开局面?
- 解锁中智集团30平方米数据中心备受追捧的密码
- python符号或非并列,Python运算符
- R语言与数据分析练习:K-Means聚类
- 栈——栈的基本概念和基本操作
热门文章
- C# 之String以及浅拷贝与深拷贝
- Python基础---线程
- 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能
- 借力大数据 物流迈向智能化
- Jake Coco - Under The Covers, Vol. 2 {2011}
- RedHat的yum源修改为CentOS的yum源
- 菜鸟学习日记:跟我一起学office2007之Excel【02基础篇】04Excel基础知识二
- WiFi相关基础概念
- zabbix之微信告警(python版):微信个人报警,微信企业号告警脚本
- 刘光毅:频谱统一推进5G尽早商用 4G网络向5G平滑演进