首页 > 编程知识 正文

js常用代码工具封装类整理,java常用工具类封装

时间:2023-12-27 22:27:49 阅读:326787 作者:UAND

本文目录一览:

前端基本功:JS(十一)动画封装(CSS样式获取、JSON遍历)

盒子 原来的位置 0 + 10 盒子现在的offsetLeft 10

|-5| = 5

这三个函数都是 数学函数

Math

比如说 console.log(Math.ceil(1.01)) 结果 是 2

console.log(Math.ceil(1.9)) 结果 2

console.log(Math.ceil(-1.3)) 结果 是 -1

比如说 console.log(Math.floor(1.01)) 结果 是 1

console.log(Math.floor(1.9)) 结果 1

console.log(Math.floor(-1.3)) 结果 是 -2

console.log(Math.round(1.01)) 结果 是 1

console.log(Math.round(1.9)) 结果 是 2

匀速动画的原理: 盒子本身的位置 + 步长

缓动动画的原理: 盒子本身的位置 + 步长 (不断变化的)

( 缺陷:只能水平方向!随后的“封装运动框架单个属性会进一步改进” )

我们访问得到css 属性,比较常用的有两种:

点语法可以得到 width 属性 和 top属性 ** 带有单位的 。 100px

但是这个语法有非常大的 缺陷**, 不变的。

后面的width 和 top 没有办法传递参数的。

var w = width;

box.style.w

最大的优点 : 可以给属性传递参数

我们想要获得css 的样式, box.style.left 和 box.style.backgorundColor

但是它只能得到 行内的样式。

但是我们工作最多用的是 内嵌式 或者 外链式 。

怎么办?

核心: 我们怎么才能得到内嵌或者外链的样式呢?

外部(使用link)和内嵌(使用style)样式表中的样式(ie和opera)

两个选项是必须的, 没有伪类 用 null 替代

我们这个元素里面的属性很多, left top width ===

我们想要某个属性, 就应该 返回该属性,所有继续封装 返回当前样式的 函数。

千万要记得 每个 的意思 : 那是相当重要

flag在js中一般作为开关,进行判断。

等动画执行完毕再去执行的函数 回调函数

我们怎么知道动画就执行完毕了呢?

很简单 当定时器停止了。 动画就结束了

案例源码:

in运算符也是一个二元运算符,但是对运算符左右两个操作数的要求比较严格。in运算符要求第1个(左边的)操作数必须是字符串类型或可以转换为字符串类型的其他类型,而第2个(右边的)操作数必须是数组或对象。只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false

案例源码:

链接:

密码:7fv8

.JS有哪些框架

目前来看,JS框架以及一些开发包和库类有如下几个,Dojo 、Scriptaculous 、Prototype 、yui-ext 、Jquery 、Mochikit、mootools 、moo.fx

Dojo (JS library and UI component ):

Dojo是目前最为强大的j s框架,它在自己的Wiki上给自己下了一个定义,dojo是一个用JavaScript编写的开源的DHTML工具箱。dojo很想做一个“大一统”的 工具箱,不仅仅是浏览器层面的,野心还是很大的。Dojo包括ajax, browser, event, widget等跨浏览器API,包括了JS本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库,也被广泛 应用在很多项目中,他的UI组件的特点是通过给html标签增加tag的方式进行扩展,而不是通过写JS来生成,dojo的API模仿Java类库的组织 方式。 用dojo写Web OS可谓非常方便。dojo现在已经4.0了,dojo强大的地方在于界面和特效的封装,可以让开发者快速构建一些兼容标准的界面。

优点:库相当完善,发展时间也比较长,功能强大,据说利用dojo的io.bind()可以实现comet,看见其功能强大非一般,得到IBM和SUN的支持

缺点:文件体积比较大,200多KB,初次下载相当慢,此外,dojo的类库使用显得不是那么易用,j s语法增强方面不如prototype。

Prototype (JS OO library):

是一个非常优雅的JS库,定义了JS的面向对象扩展,DOM操作API,事件等等,以prototype为核心,形成了一个外围的各种各样 的JS扩展库,是相当有前途的JS底层框架,值得推荐,感觉也是现实中应用最广的库类(RoR集成的AJAX JS库),之上还有 Scriptaculous 实现一些JS组件功能和效果。

优点:基本底层,易学易用,甚至是其他一些js特效开发包的底层,体积算是最小的了。

缺点:如果说缺点,可能就是功能是他的弱项

Scriptaculous (JS UI component based on prototype):

Scriptaculous是基于prototype.js框架的JS效果。包含了6个js文件,不同的文件对应不同的js效果,所以说,如果底层用 prototype的话,做js效果用Scriptaculous那是再合适不过的了,连大名鼎鼎的digg都在用他,可见不一般

优点:基于prototype是最大的优点,由于使用prototype的广泛性,无疑对用户书锦上添花,并且在《ajax in action》中就拿Scriptaculous来讲述js效果

缺点:刚刚兴起,需要时间的磨练

yui-ext (JS UI component):

基于Yahoo UI的扩展包yui-ext是具有CS风格的Web用户界面组件 能实现复杂的Layout布局,界面效果可以和backbase媲美,而且使用纯javascript代码开发。真正的可编辑的表格Edit Grid,支持XML和Json数据类型,直接可以迁入grid。许多组件实现了对数据源的支持,例如动态的布局,可编辑的表格控件,动态加载的Tree 控件、动态拖拽效果等等。1.0 beta版开始同Jquery合作,推出基于jQuery的Ext 1.0,提供了更多有趣的功能。

优点:结构化,类似于java的结构,清晰明了,底层用到了Jquery的一些函数,使整合使用有了选择,最重要的一点是界面太让让人震撼了。

缺点:太过复杂,整个界面的构造过于复杂。

Jquery :

jQuery是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优 秀的js效果,jQuery可以帮你达到目的!并且简介的语法和高的效率一直是jQuery追求的目标,

优点:注重简介和高效,js效果有yui-ext的选择,因为yui-ext 重用了很多jQuery的函数

缺点:据说太嫩,历史不悠久。

Mochikit :

MochiKit自称为一个轻量级的js框架。MochiKit 主要受到 Python 和 Python 标准库提供的很多便利之处的启发,另外还缓解了浏览器版本之间的不一致性。其中的 MochiKit.DOM 尤其方便,能够以比原始 JavaScript 更友好的方式处理 DOM 对象。MochiKit.DOM 大部分都是针对 XHTML 文档定制的,如果与 MochiKit 和 Ajax 结合在一起,使用 XHTML 包装的微格式尤其方便。Mochikit可以直接对字符串或者数字格式化输出,比较实用和方便。它还有自己的 js 代码解释器

优点:MochiKit.DOM这部分很实用,简介也是很突出的

缺点:轻量级的缺点

mootools :

MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools跟prototypejs相类似,语法几乎一样。但它提供的功能要比prototypejs多,而且更强大。比如增加了动画特效、拖放操作等等。

优点:可以定制自己所需要的功能,可以说是prototypejs的增强版。

缺点:不大不小,具体应用具体分析

moo.fx :

moo.fx是一个超级轻量级的javascript特效库(7k),能够与prototype.js或mootools框架一起使用。它非常快、易于使用、跨浏览器、符合标准,提供控制和修改任何HTML元素的CSS属性,包括颜色。它内置检查器能够防止用户通过多次或疯狂点击来破坏效果。moo.fx整体采用模块化设计,所以可以在它的基础上开发你需要的任何特效。

优点:小块头有大能耐

缺点:这么小了,已经不错了

如何实现JS的封装和JS封装的好处

而且对于JS代码,因为本身就是一出现是一大段,自然如果不封包起来通过调用的方式进行整理的话,直接放到网站源码中,自然就会加大的源码的体积,而且还会影响到代码的美现。而且现在很多的杀毒软件都把JS代码误报为病毒,况且JS代码外露也很容易让不良分子找到攻击网站的参照物。JS封装的好处:1、提高网站的打开速度。2、符合SEO搜索引擎思路。3、加大网站的曝光力度。所以,对于提高网站访问速度,最好把JS代码封包起来,而且还要通过ROBOT文件把之屏蔽掉,毕竟这些都是搜索引挚不能识别的,外放对于提高收录只有坏外没有好处,所以,为了收录为了访问速度能封装的JS代码就尽时封装。

js代码如何封装

1. 定义js类 

js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 

代码如下:

function ShapeBase() { 

    this.show = function(){ 

        alert("ShapeBase show"); 

    }; 

    this.init = function(){ 

        alert("ShapeBase init"); 

    }; 

}

这个类里定义了两个方法:show和init, 需要注意的是这里用到了this来声明, 而不是var, 因为用var是用来定义私有方法的. 

另外, 我们还可以用prototype属性来定义Shape的方法. 

代码如下:

ShapeBase.prototype.show=function() 

    alert("ShapeBase show"); 

ShapeBase.prototype.init=function() 

    alert("ShapeBase init"); 

}

上面这种写法看起来不太直观,我们可以将所有的方法写在一起. 

代码如下:

ShapeBase.prototype={ 

    show:function(){ 

        alert("ShapeBase show"); 

    }, 

    init:function() { 

        alert("ShapeBase init"); 

    } 

};

现在, 类是写好了, 让我们写个js来测试下, 看看结果是不是跟我们想象的一样呢? 

代码如下:

function test(src){ 

    var s=new ShapeBase(); 

    s.init(); 

    s.show(); 

}

看到了吧, 其调用方式和C#一模一样, 而结果也如我们所料. 

到目前为止, 我们学会了如何创建js的类了, 但还只是实例方法,要是实现跟C#中的静态方法要怎么做呢? 

其实, 实现js的静态方法很简单, 看下面如何实现: 

代码如下:

//静态方法 

ShapeBase.StaticDraw = function() 

    alert("method draw is static"); 

}

2. 实现JS类抽象和继承 

同样, js中也不支持类继承机制,但我们可以通过将父类prototype中的成员方法复制到子类的prototype中来实现. 

和类的继承一样,JavaScript也没有任何机制用于支持抽象类.但利用JavaScript语言本身的性质.可以实现自己的抽象类. 

首先来看看js中的虚方法, 在传统语言中虚方法是要先定义的, 而包含虚方法的类就是抽象类,不能被实例化,而在JavaScript中,虚方法就可以看作该类中没有定义的方法,但已经通过this指针使用了. 

和传统面向对象不同的是,这里虚方法不需经过声明,而直接使用了, 并且类也可以被实例化. 

先定义object的extend方法, 一个为静态方法,一个为实例方法, 这两个方法用于实现继承的prototype复制 

代码如下:

Object.extend = function(destination, source) { 

    for (property in source) { 

    destination[property] = source[property]; 

    } 

    return destination; 

Object.prototype.extend = function(object) { 

    return Object.extend.apply(this, [this, object]); 

}

接下来我们实现一个继承类Rect, 这里先用一种简单的方法来实现。 

代码如下:

function Rect() { } 

Rect.prototype = ShapeBase.prototype; //只这一句就行了 

//扩充新的方法 

Rect.prototype.add=function() { 

    alert("Rect add"); 

}

这种方法不能用于重写,如果改变了show方法, ShapeBase的show也会指向同一函数可能是由于prototype赋值只是简单的改变指向地址. 

如果上面也定义了: 

Rect.prototype.show=function() { 

    alert("Rect show"); 

}

那么执行结果如下: 

function test(){ 

    var s=new ShapeBase(); 

    s.show(); //结果:Rect show 

    var r=new Rect(); 

    r.show(); //结果:Rect show 

    r.add(); 

}

我们再使用object.extend实现继承, 并实现一个oninit虚方法, 修改ShapeBase如下: 

代码如下:

ShapeBase.prototype={ 

    show:function() 

    { 

        alert("ShapeBase show"); 

    }, 

    initialize:function () { 

        this.oninit(); 

    } 

};

实现Rect类继承. 

代码如下:

Rect.prototype=(new ShapeBase).extend({ 

  //添加新的方法 

  add:function() { 

    alert("Rect add"); 

    }, 

    //使用这种方法可以重写show方法 

    show:function() { 

        alert("Rect show"); 

    }, 

    //实现虚方法 

    oninit:function() { 

    alert("Rect oninit"); 

    } 

})

新手请教,如何将一段JS代码封装成一个方法

鉴于楼主欠缺编程经验,我就先不说封装成jQuery插件等高大上的做法了。单就论封装成方法而言。

方法,也就是函数。是面向过程式语言一种代码复用的初级手段,简而言之,就是把重复的部分用函数封装起来。

例如猫叫多遍,cat.meow(), 你总不可能写对应次数的代码,一般会写成:

function meow(num){

    for(var i=0;inum;i++){

        cat.meow()

    }

}

meow(1000)

这就是一种最基础的代码复用。

当然,面向对象的语言也许有更简单的 cat.meow(1000)

那么,针对楼主的情况。逐步讲一下各层次的方法。最简单的用函数封装一下就是:

function effect(srcDom,destDom,className){

    $(srcDom).mouseenter(function(){

        $(destDom).addClass(className)

    }).mouseout(function(){

        $(destDom).removeClass(className)

    })

}

然后调用

effect('#plate-1','#plate-1hover','plate-1after')

effect('#plate-2','#plate-2hover','plate-2after')

effect('#plate-3','#plate-3hover','plate-3after')

鉴于楼主的DOM的ID和Class命名比较有规律,可以写成这样

function effect(name){

    $('#'+name).mouseenter(function(){

        $('#'+name+'hover').addClass(name+'after')

    }).mouseout(function(){

        $('#'+name+'hover').removeClass(name+'after')

    })

}

然后调用

effect('plate-1')

effect('plate-2')

effect('plate-3')

但是这样还是不够通用,楼主应该看看事件方面有关事件委托的知识

js有哪些内置的数据封装类对象

1.JavaScript核心语言定义:包括数据类型,变量,常量,运算符,语句等.

2.原生对象和内置对象

3.浏览器对象BOM

4.文档对象类型DOM

5.事件处理模型

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。