javascript面向对象包装类Class的类库解析

作者:小菜 更新时间:2025-02-07 点击数:
简介:javascript是个入门门槛很低的语言,甚至一个从来没有接触过javascript的技术人员,几小时内就可以写出一个简单有用的程序代码。

但是如果因此你就下结

【菜科解读】

javascript是个入门门槛很低的语言,甚至一个从来没有接触过javascript的技术人员,几小时内就可以写出一个简单有用的程序代码。

但是如果因此你就下结论:javascript是门简单的语言。

那你就大错特错了。

想写出高性能的代码,同样需要具备一个高级程序员的基本素养。

一个java或者c++程序员,不一定能写出高性能的javascript代码,但更容易写出高性能的javascript代码。

javascript的简单是基于它“胸襟广阔”的包容性。

它声明时,不需要指定类型,甚至可以任意的转换类型。

它面向对象,却没有类(Class)的限制。

它是一门崇尚自由又非常严谨的语言,如果你是一个自由主义者,那么,拥抱javascript吧!

面向对象编程 (OOP) 是一种流行的编程方法。

但javascript的OOP,较之JAVA、c++有很大的同,主要体现它的继承方式不同。

javascript是基于原型PROTOTYPE继承的。

所有对象都是基于原型链,最终追述到Object对象。

这里不想讨论过多的关于javascript的继承方式和其它语言的继承方式的不同之处。

主要讨论如何封装javascript的Class,以便更好的管理和维护基础代码,减少重复代码,以及更好的模块化编程。

下面是几个github上找到的比较好的Class封装类库:

一、MY-CLASS

项目地址:https://github.com/jiem/my-class

先看基本用法:

a、新建一个类

(function() { // 新建类 var Person = my.Class({ // 添加静态方法 STATIC: { AGE_OF_MAJORITY: 18 // 构造函数 constructor: function(name, age) { this.name = name; this.age = age; // 实例方法 sayHello: function() { console.log('Hello from ' + this.name + '!'); // 实例方法 drinkAlcohol: function() { this.age b、继承一个类

(function() { //Dreamer 继承 Person var Dreamer = my.Class(Person, { // 构造方法 constructor: function(name, age, dream) { Dreamer.Super.call(this, name, age); this.dream = dream; // 实例方法 sayHello: function() { superSayHello.call(this); console.log('I dream of ' + this.dream + '!'); // 实例方法 wakeUp: function() { console.log('Wake up!'); // Super访问父类 var superSayHello = Dreamer.Super.prototype.sayHello; // 暴露给全局命名空间 myLib.Dreamer = Dreamer;})();var sylvester = new myLib.Dreamer('Sylvester', 30, 'eating Tweety');sylvester.sayHello(); //log "Hello from Sylvester! I dream of eating Tweety!"sylvester.wakeUp(); //log "Wake up!"

c、给类添加新方法

// 给myLib.Dreamer添加新方法my.extendClass(myLib.Dreamer, { // 添加静态方法 STATIC : { s_dongSomeThing : function(){ console.log("do some thing!"); // 添加实例方法 touchTheSky: function() { console.log('Touching the sky'); // 添加实例方法 reachTheStars: function() { console.log('She is so pretty!');});

d、实现一个类的方法

// 声明一个新类myLib.ImaginaryTraveler = my.Class({ travel: function() { console.log('Traveling on a carpet!'); }, crossOceans: function() { console.log('Saying hi to Moby Dick!'); }(function() { //Dreamer 继承 Person 实现 ImaginaryTraveler的方法 var Dreamer = my.Class(Person, ImaginaryTraveler, { // 构造方法 constructor: function(name, age, dream) { Dreamer.Super.call(this, name, age); this.dream = dream; // ... // 暴露给全局命名空间 myLib.Dreamer = Dreamer;})();var aladdin = new Dreamer('Aladdin');aladdin instanceof Person; //truealaddin instanceof ImaginaryTraveler; //falsealaddin.travel();aladdin.wakeUp();aladdin.sayHello();

如果怕忘记new操作符

var Person = my.Class({ //you can now call the constructor with or without new constructor: function(name, city) { if (!(this instanceof Person)) return new Person(name, city); this.name = name; this.city = citye;});

下面看一下my.class的源代码解析:

my.Class实现思路基本是这样的,如果只有一个参数,那么声明的是一个基础类,这个参数是用来声明新类的方法和属以及构造函数。

它不是继承而来,但它可以被继承。

继承的思路,就是如果有两个参数,第一个参数做为父类被继承,第二参数用来声明新类的方法和属性以及构造函数,它同样可以被继承。

如果有三个以上参数那么,除出第一个参数做为继承的父类,最后一个参数用声明新类的方法和属性以及构造函数。

中间的参数是用类来扩展新类的方法。

当然也可以通过my.extendClass扩展新方法。

同时,类库为commonJS和浏览环境都提供了支持!

/*globals define:true, window:true, module:true*/(function () { // Namespace object var my = {}; // 保证AMD分模块可用 if (typeof define !== 'undefined') define([], function () { return my; else if (typeof window !== 'undefined') // 保证客户端可用 window.my = my; else // 保证后台可用 module.exports = my; //============================================================================ // @method my.Class // @params body:Object // @params SuperClass:function, ImplementClasses:function..., body:Object // @return function my.Class = function () { var len = arguments.length; var body = arguments[len - 1]; // 最后一个参数是指定本身的方法 var SuperClass = len > 1 ? arguments[0] : null; // 第一个参数是指继承的方法,实例和静态部分均继承 var hasImplementClasses = len > 2; // 如果有第三个参数,那么第二个就是implementClass,这里其实只继承实例对象 var Class, SuperClassEmpty; // 保证构造方法 if (body.constructor === Object) { Class = function() {}; } else { Class = body.constructor; // 保证后面不覆盖constructor delete body.constructor; // 处理superClass部分 if (SuperClass) { // 中间件实现实例属性的继承 SuperClassEmpty = function() {}; SuperClassEmpty.prototype = SuperClass.prototype; Class.prototype = new SuperClassEmpty(); // 原型继承,解除引用 Class.prototype.constructor = Class; // 保证constructor Class.Super = SuperClass; // 父对象访问接口 // 静态方法继承,重载superClass方法 extend(Class, SuperClass, false); // 处理ImplementClass部分,其实只继承实例属性部分,除SuperClass #arguments[0]# 和 body #arguments[length-1]# if (hasImplementClasses) for (var i = 1; i 1234在本页阅读全文 本文导航 第1页: 首页 第2页: KLASS 第3页: 简单实现 第4页: mootools类库的Class javascript,面向,对象,包装,类,Class,的,

                                   

相亲找对象靠谱

  现在有很多相亲网站都在大肆宣传相亲脱单途径,可是相亲找对象靠谱吗,很多大龄单身青年尽管想要早点脱单,却还是会仔细思考这个问题,在网站上找的对象是否真的靠谱呢?这个问题值得探讨,跟花镇小编一起探讨下吧。

  一、相亲找对象靠谱吗?  现在的相亲网站五花八门,似乎只有你想不到的,没有你找不到的相亲对象,大家想要脱单,似乎只要一键上传自己的资料,就能成功匹配找到自己想要的理想型,可是网上相亲找对象靠谱吗,我们为何还会问这样的问题?本来大多数时候,是因为我们见到的真人往往不像网站上描述的那样长得好看也优秀。

那么这样相亲找来的对象到底靠不靠谱呢?情感问题添加花镇情感导师/信:,领取专业的情感分析  首先,相亲网站找对象的优点在于,你能在非常短的时间内浏览到大量处于单身求偶状态下的异性的资料,因为针对性强,所以网上与求偶有关的资料更全面。

资源集中、目的性强,比较适合想要快速脱单的朋友。

>>分手后如何挽回最有效?10s快速预约挽回方案  另外,人们的工作越来越忙,,流动性越来越大,家庭、邻里的联系却不断弱化,过去通过亲朋好友介绍对象的方式已经难以满足单身人士的需要。

对有孩子或40岁以上的单身人士来说,用传统的方式找对象难度较大。

  但是在相亲网站上找对象也有不好的地方,比如在婚恋网站的庞大会员库中浏览、挑选对象的时候,你不一定会认真阅读每个人的资料,只是被对方的某些个人特点(例如外貌)所吸引,远不如遇到真人时了解得深入。

可供选择的人太多,你或许会因为一时间的好感想要见到对方,可是见到之后发现真人与网上的相差太大,这样的相亲过程多了,容易让人陷入脱单困惑之中。

  二、相亲找对象成功技巧  别着急结婚,先以处朋友的关系了解对方,不可看到对方的条件,都直接想要急着嫁人。

嫁人就要考虑到对方的经济实力,这是虽然是一方面,不过性格不合往往是婚姻破裂的根本调价,所以相亲要以交朋友来相处。

  以相亲方式,话不可说得太满。

首次接触到的朋友,你很难了解到对方的人品,所以看人还需要多方面的考察,如果说话太满,很容易让对方感觉到反感,相亲成功率降低。

  以相亲方式,对方一般都会看重条件,重视感情的几率很少,相亲结婚是中国传统的男女婚姻联姻的方式,有时候并不一定适合自己。

所以说询问对方,一定要抓重要话题来询问。

情感问题添加花镇情感导师/信:,领取专业的情感分析  把相亲交友当做是一种逐步扩大交际圈的方法。

不过相亲找对象,不要找妈宝男,对于什么事情都会听从父母意见的,即使你嫁给他,也很容易受气受罪,所以找对象还是得擦亮眼睛。

  相亲方式找对象成功率比较低,但是不排除也有例外。

大学时光是美好的,彼此之间的感情很纯真,在大学能够谈到真正的对象,而进入社会后,越来越多的朋友开始适应社会环境,通过相亲处对象,着急结婚,很可能不是非常爱你,只是愿意和你结婚,为了传宗接代,也有这种情况,所以大家一定要警惕。

相亲找对象,男人更注重什么?

花花世界中,男生、女生都会通过各种相亲网找对象相亲。

在相亲找对象中,相比女人男人更注重什么呢?  一、看得过去的脸蛋和身材  不要说男人是外貌协会,试问谁看人第一眼不是看脸蛋和身材的。

“我爱你,因为你心灵美”这种话的意思是:前提是你有靓丽的外表,再谈心灵美。

脸蛋儿和身材绝对是衡量女人气质一个不可或缺的标准,小S曾说:“你再善良也是个胖子”,女孩们,重视你的脸蛋儿和身材吧。

所以,首次相亲时是画个淡妆,穿得漂亮点,修饰自己一番,切莫邋里邋遢的就去了。

毕竟之前可能你们就只是在相亲网了解了对方。

当然,也不要顶着厚厚的粉底、浓重的眼影或过于艳丽的腮红去相亲,那会让对方感到胆怯。

他们会想,连真实面目都不敢示人,模模糊糊,莫非想掩盖什么,还是保持距离为好。

情感困惑加导师/信,一对一免费分析  二、对方的经济工作情况  现在社会生存竞争压力这么大,男人也像女人一样,相亲找对象中期待另一半可以有稳定的工作和不错的收入,减轻自己的负担。

在近20年中,女人的工作情况已然成为男人选择配偶时非常看重的一个方面。

有稳定工作和收入的女性,更容易得到男人的青睐。

所以,新时代的女性们,好吃懒做,只想找个有钱的老公是行不通的,自己也有独立经济能力哦。

没有独立经济能力,不仅以后婚内不好过,可能还很难嫁出去哒。

三、拥有坚强独立的性格  男人在找相亲找对象时一般都找性格坚强的女性,因为他们通常都受不了女人忽冷忽热的态度和若即若离的距离感。

而且,男人不喜欢女人用爱的名义束缚自己,喜欢有自己的个性又相对独立的女孩。

毕竟,男人最主要的事是自己的事业,所以,男人开始在恋爱与事业之间奔波,不再有时间来讨好女孩,不再对女孩做到有求必应。

加/信,一对一免费分析情感问题  四、对方对婚姻的态度  男人面对婚姻特别理性,不会轻易结婚,当然也不会轻易离婚。

所以,他们相亲找对象时会格外重视女方对婚姻的看法,比如说:是否以家庭为重,认为孝顺老人是应做的等等。

因为这些直接关系到两人婚后的相处是否和谐,男人这种天生胆怯麻烦的动物,可不想结了婚才发现彼此不合适。

  五、两人性格是否合得来  不少人分手的理由是:性格不合。

的确,性格不合的两个人,想要走完一辈子真是太难了。

身边不少男性朋友在选择另一半时,性格契合是所有条件的前三名,由此可见,性格是否契合这件事太主要了,相亲网只是人们认识的一个途径。

六、品性善良大方得体  一个人的言行举止能间接地透露出她的家教,男人都想找个大方得体的女人,言行举止顾忌对方的感受,和这样的女人生活在一起才会舒服,日子才干过下去。

男人可以容忍老婆的蛮不讲理,但绝对不会容忍老婆心地的不善。

在家你可以耍横和蛮不讲理,但出门后你必须表现的象一位淑女那样举止得当。

总之,详情决定成败,你平时的修养在相亲时就体现在言行举止中,女人要注意哦。

  七、不虚荣做作的女人  大多数的女人都是感性的,因此,对于世俗的看法非常的重视。

自然而然的,女人的虚荣心非常的强烈,而对于虚荣心强烈的女人,男人总是会感觉亚历山大。

因此,大多数的男人讨厌女人的虚荣。

当作一个百分百妻子人选,不要太过虚荣。

  八、性格不过于强势的女人  女人可以独立,有自己的事业,做个女强人。

但是,在家里,面对老公不要太强势,男人是不喜欢的。

大部分的男人是大男子主义的,对于传统的女主内男主外家庭分工已经根深蒂固。

所以,大部分的男人希望自己的妻子不要太过于强势。

如果可以的话,可以留在家中相夫教子是再好不过的了。

而同时,在性格方面也是如此,太过强势的女人会让男人觉得面子、里子都憋屈。

九、贤妻良母能打理家务  相亲找对象时,每个男人都希望自己可以娶到一个贤妻良母,自己在外打拼的时候,她可以在家中帮自己打理好家庭。

因此,男人相亲时希望找一个不娇蛮,对自己的家人宽容,孝敬父母,教养小孩,料理家事的好女人,这是男人心目中最完美的妻子形象。

  十、女人对待公婆的态度  现在的婆媳问题是社会公认难题,也是男人们最头疼的,当夹心饼干实在是太不好受,所以,男人相亲时希望能找一个宽容对待老人,对公婆孝顺的好老婆。

老公很在意老婆对待公婆的态度,尤其是当着公婆的面绝对不能显示出自己的高贵,更不能有丝毫瞧不起男家的意思,而且不能有丝毫不孝敬长辈的行为举止。

 热门文章推荐: 约会看电影out:教你三个约会技巧 感情迅速升温 挽回你用对方法了吗?6步走教你针对性挽回 相亲约会:如何选一个好的约会场所

加入收藏
               

javascript面向对象包装类Class的类库解析

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录