转自: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)——转相关推荐

  1. Backbone的写类方式

    从两个角度去讨论Backbone的写类方式 Backbone内部的写类方式,Backbone自身的类如Model.Collection.View等是如何定义的 Backbone外部的写类方式,如何使用 ...

  2. 在JavaScript里写类层次结构?别那么做!

    从理论上讲,JavaScript并没有类.在实践中,下面的代码片段被广泛认为是JavaScript"类"的一个例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  3. JavaScript中实现私有属性的写类方式(2)

    上一篇写了个工具函数$class,这篇再完善以下.实现以下功能 1,继承 2,子类继承父类时,不继承父类的私有属性 /*** @param {String} className* @param {St ...

  4. Javascript脚本运行的方式(js写在页面什么地方)

    1.脚本写在函数里,body标签里加onload这个函数,意为body加载完成执行函数func.代码如下: <script type="text/javascript"> ...

  5. JavaScript面向对象:类、方法、属性

    JavaScript是一种基于对象的语言,与传统面向对象语言(C#.C++)相比,JavaScript中没有类的概念,其继承有两种基本形式:基于对象的继承和基于类型的继承(原型链继承).无论哪种形式的 ...

  6. JavaScript判断数据类型的方式

    JavaScript判断数据类型的方式 js中的数据类型有哪些? 基本数据类型:number.string.boolean.null.undefined.symbol以及未来ES10新增的BigInt ...

  7. VS Code - Debugger for Chrome调试JavaScript的两种方式

    VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrom ...

  8. javascript tab切换类LixTabs最新版

    javascript Tab切换类LixTabs,更新至0.5版: 受snandy的"读jquery"系列的启发,改进了代码,现在调用LixTabs时不用加new了.即可以这样写: ...

  9. Javascript基础与面向对象基础~第四讲 Javascript中的类对象

    今天来说JS中如何实现类(class),事实上本应该昨天晚上写的,可我失言了,在些说一声"抱歉"!JS中的类是JS面向对象的基础,也是我最拿手的东西,你写的代码能否提高一个层次,一 ...

最新文章

  1. service 与chkconfig
  2. 【剑指offer-Java版】06重建二叉树
  3. unicode 版本 delphi (如XE2)的 TBytes 转换为 AnsiString
  4. linux共享库 == windows动态库
  5. scanf函数使用遇到的问题
  6. Linux分支代码必须公开吗,linux – 当拉出不同的分支时,让“git pull”请求确认...
  7. IOS 控件 - 去除 tableView 多余的横线
  8. android后台自播放音乐,Android实现后台播放音乐(Service方式)
  9. Java并发编程--理解ThreadLocal
  10. 给你1分钟,回答下RabbitMQ如何保证消息不丢?
  11. 干了三年的Java,你竟然还不会MySQL性能优化
  12. Java基础:介绍访问控制
  13. asp.net中如何退出整个框架(frameset ),回到登录界面?
  14. PSD网页切图制作HTML全过程教程
  15. php开发h5游戏教程,HTML5游戏框架cnGameJS开发实录-实现动画原理
  16. 空降到一个公司做高管,怎么打开局面?
  17. 解锁中智集团30平方米数据中心备受追捧的密码
  18. python符号或非并列,Python运算符
  19. R语言与数据分析练习:K-Means聚类
  20. 栈——栈的基本概念和基本操作

热门文章

  1. C# 之String以及浅拷贝与深拷贝
  2. Python基础---线程
  3. 阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能
  4. 借力大数据 物流迈向智能化
  5. Jake Coco - Under The Covers, Vol. 2 {2011}
  6. RedHat的yum源修改为CentOS的yum源
  7. 菜鸟学习日记:跟我一起学office2007之Excel【02基础篇】04Excel基础知识二
  8. WiFi相关基础概念
  9. zabbix之微信告警(python版):微信个人报警,微信企业号告警脚本
  10. 刘光毅:频谱统一推进5G尽早商用 4G网络向5G平滑演进