JavaScript学习总结(十三)——极简主义法编写JavaScript类

  前两天在网上无意中发现了一篇使用极简主义法定义JavaScript类的文章,原文链接,这个所谓的"极简主义法"我还是第一次听说,是荷兰程序员Gabor de
Mooij提出来的,这种方法不使用this和prototype,代码部署起来非常简单,这大概也是它被叫做"极简主义法"的原因。下面就介绍如何使用极简主义法完成JavaScript的封装和继承

1. 封装

  首先,它也是用一个对象模拟"类"。在这个类里面,定义一个构造函数createNew(),用来生成实例。


1 var Cat = {
2     createNew: function(){
3       // some code here
4     }
5 };

  然后,在createNew()里面,定义一个实例对象,把这个实例对象作为返回值。


1 var Cat = {
2     createNew: function(){
3       var cat = {};
4       cat.name = "大毛";
5       cat.makeSound = function(){ alert("喵喵喵"); };
6       return cat;
7     }
8 };

  使用的时候,调用createNew()方法,就可以得到实例对象。


1 var cat1 = Cat.createNew();
2 cat1.makeSound(); // 喵喵喵

  这种方法的好处是,容易理解,结构清晰优雅,符合传统的"面向对象编程"的构造,因此可以方便地部署下面的特性。

2. 继承

  让一个类继承另一个类,实现起来很方便。只要在前者的createNew()方法中,调用后者的createNew()方法即可。

  先定义一个Animal类:


1 var Animal = {
2     createNew: function(){
3       var animal = {};
4       animal.sleep = function(){ alert("睡懒觉"); };
5       return animal;
6     }
7 };

  然后,在Cat的createNew()方法中,调用Animal的createNew()方法


1 var Cat = {
2     createNew: function(){
3       var cat = Animal.createNew();
4       cat.name = "大毛";
5       cat.makeSound = function(){ alert("喵喵喵"); };
6       return cat;
7     }
8 };

  这样得到的Cat实例,就会继承Animal类。


1 var cat1 = Cat.createNew();
2 cat1.sleep(); // 睡懒觉

3. 私有属性和私有方法

  在createNew()方法中,只要不是定义在cat对象上的方法和属性,都是私有的。


 1 var Cat = {
2     createNew: function(){
3       var cat = {};
4       var sound = "喵喵喵";//私有属性
5       cat.makeSound = function(){
6 alert(sound);
7 };
8       return cat;
9     }
10 };

  上例的内部变量sound,外部无法读取,只有通过cat的公有方法makeSound()来读取。


1 var cat1 = Cat.createNew();
2 alert(cat1.sound); // undefined

4. 数据共享

  有时候,我们需要所有实例对象,能够读写同一项内部数据。这个时候,只要把这个内部数据,封装在类对象的里面、createNew()方法的外面即可。


1 var Cat = {
2     sound : "喵喵喵",
3     createNew: function(){
4       var cat = {};
5       cat.makeSound = function(){ alert(Cat.sound); };
6       cat.changeSound = function(x){ Cat.sound = x; };
7       return cat;
8     }
9 };

  然后,生成两个实例对象:


1 var cat1 = Cat.createNew();
2 var cat2 = Cat.createNew();
3 cat1.makeSound(); // 喵喵喵

这时,如果有一个实例对象,修改了共享的数据,另一个实例对象也会受到影响。


1 cat2.changeSound("啦啦啦");
2 cat1.makeSound(); // 啦啦啦

  极简主义,看起来很美好,但是也有缺点,首先是不能使用instanceof 判断对象所属的类,"cat1 instanceof
Cat"无法通过,另外,极简主义虽然摆脱了使用原型链的缺点(属性不能私有、创建、继承对象不够直观),但也暴露了没用原型链的弊端:每一次生成一个实例,都必须为重复的内容,多占用一些内存。

时间: 2024-10-11 00:23:27

JavaScript学习总结(十三)——极简主义法编写JavaScript类的相关文章

js分解url参数(正则表达式,split比较)(面向对象-极简主义法应用)

一:正则表达式法 <script type="text/javascript"> function getQueryString(url) { if(url) { url=url.substr(url.indexOf("?")+1); //字符串截取,比我之前的split()方法效率高 } var result = {}, //创建一个对象,用于存name,和value queryString =url || location.search.substr

极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义. 深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福. 放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 1.欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风.把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 2.精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高.不盲目浪费自己的时间与精

少即是多------------极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义. 深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福. 放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风. 把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高.不盲目浪费自己的时间与精力.

如何实践极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义. 深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福. 放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风. 把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高. 不盲目浪费自己的时间与精力.

极简主义(Minimalist)Web 框架大汇总

极简主义(Minimalist)Web 框架大汇总 罗列了一系列极简主义的框架(简单.轻量级),按编程语言分好类,按字母顺序排序. 列表 CSS 框架 C 写的 Web 框架 PHP 写的 数据库 框架 前端 JS 的框架 Go 写的 Web 框架 Haskell 写的 Web 框架 Java 写的 Web 框架 JavaScript 写的 Web 框架 Lua 写的 Web 框架 Node.js 写的 Web 框架 Perl 写的 Web 框架 PHP 写的 Web 框架 Python 写的

人这辈子应该这样活,极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义.深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福.放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 1.欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风. 把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 2.精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高.不盲目浪费自己的时间与精力

极简主义生活方式是什么?&lt;转载&gt;

首先强调一点,以下谈到的极简主义(minimalism)均指生活方式,与设计.与艺术.与哲学上的极简主义都没有直接联系,尽管它们中英文都是用同一个词表示.同理下文的极简主义者(minimalist)是指实践极简主义生活方式的人,而不是喜欢极简主义设计风格的人. 一.为什么要选择极简主义? 如果你属于以下的某一个类型,大概极简主义有可能帮到你: 打折购物狂.每次看到打折商品都有买的冲动,觉得这便宜不占白不占.结果买了一堆没用的或者极少使用的玩意,花的钱反而比“有需求时再买(即使是原价不打折的)”更

04.极简主义——热情(笔记)

1.我们被教育累死累活地位一家没有生命的单位辛勤工作,显出最宝贵的东西(我们的时间),职位换的一张工资单. 2.你的身份应该源于有意义的生活,而不在于你如何挣得工资. 3.利用你所热爱的事物集中精神,为自己补充更多热情,这对寻找使命而言非常关键.但首先,你必须发现你热爱的是什么. 4.一旦将你的职业认定的"你是什么人"这一问题的答案,你就很难做其他的事情.这就是人们在换工作时总是待在同一行业内的原因之一. 5.我们需要公开以导师.领导人.贡献者.极简主义这些更有意义的身份自居. 6.你

张艾迪(创始人):视觉计算极简主义的设计

AOOOiA.global创始人艾迪张:面临着新互联网的时代的到来.全球各行业对产品设计和色彩搭配上进行了新的色彩标准化.就想人们喜欢Apple的黑与白.喜欢AOOOiA.Global/224 的赤橙黄绿青蓝紫的鲜亮的色彩世界一样;不同忽视的是.更明亮.更清晰.更拟真化的视觉体验与视觉计算中.每一帧的色彩.每一帧的画质.都将更加标志性的展现与运用在各个领域与产品之中:全球市场喜欢不断的跟随市场色彩的变化.而忽略了真实化色彩世界的本真进化::让我们随着色彩进化论从回到19世纪:直到19世纪.我们所