整理一下js面向对象中的封装和继承。1.封装 js中封装有很多种实现方式,这里列出常用的几种。1.1 原始模式生成对象 直接将我们的成员写入对象中,用函数返回。 缺点:很难看出是一个模式出来的实例。代码: function Stu(name, score) {return {name: name,score: score}}var stu1 = Stu("张三", 80);var stu2 = Stu("李四", 90);console.log(stu1.name); // 张三1.2 生成构造模式对象 js帮我们提供了一个使用构造函...
在Node.js中对模块载入和执行进行了包装,使得模块文件中的变量在一个闭包中,不会污染全局变量,和他人冲突。前端模块通常是我们开发人员为了避免和他人冲突才把模块代码放置在一个闭包中。如何封装Node.js和前端通用的模块,我们可以参考Underscore.js 实现,他就是一个Node.js和前端通用的功能函数模块,查看代码:// Create a safe reference to the Underscore object for use below.var _ = function(obj) {if (obj instance...
在开发的过程中,我们要做淡入淡出效果的话,我们完全可以使用jQuery的fadeTo()方法。但是我们的目的不只是会用,而是理解程序底层的逻辑。这篇文章主要就是利用原生的javascript实现淡入淡出的效果。构建框架,基本没难度。<!DOCTYPE html> <html><head><meta charset="UTF-8"><title>透明度函数的封装</title><style type="text/css">#box{width: 200px;height: 200px;background: red;margin: 50px auto;opacity: .3;filter: al...
weUI应用,自己用JS封装了几个常用的信息提示的弹层测试页面的代码在后面有贴出几个弹层如下图HTML页面代码:<!DOCTYPE html> <html> <head> <title>weUI-test</title> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> <meta http-equiv="pragma" con...
代码:function drag(t,p){var point = p || null,target = t || null,resultX = 0,resultY = 0;(!point)? point = target : ; //如果没有拖动点,则拖动点默认为整个别拖动元素function getPos(t){var offsetLeft = 0,offsetTop = 0,offsetParent = t;while(offsetParent){offsetLeft+=offsetParent.offsetLeft;offsetTop+=offsetParent.offsetTop;offsetParent = offsetParent.offsetParent;}return {top:offsetTop,left:offsetL...
基本封装方法请看下面的例子:var Person = function(name,age){this.name = name;this.age = age || "未填写";this.hobbys = []; }Person.prototype = {sayName:function(){console.log(this.name);},sayAge:function(){console.log(this.age);},addHobby:function(hobbys){this.hobbys = this.hobbys.concat(hobbys);} }var person1 = new Person("Jane","20"); var person2 = new Person("TabWeng","21");person1.addHobby([sin...
虽然 JavaScript 天生就是一副随随便便的样子,但是随着浏览器能够完成的事情越来越多,这门语言也也越来越经常地摆出正襟危坐的架势。在复杂的逻辑下, JavaScript 需要被模块化,模块需要封装起来,只留下供外界调用的接口。闭包是 JavaScript 中实现模块封装的关键,也是很多初学者难以理解的要点。最初,我也陷入迷惑之中。现在,我自信对这个概念已经有了比较深入的理解。为了便于理解,文中试图封装一个比较简单的对象。我们...
[javascript] /** * 执行基本ajax请求,返回XMLHttpRequest * Ajax.request({ * url * async 是否异步 true(默认) * method 请求方式 POST or GET(默认) * data 请求参数 (键值对字符串) * success 请求成功后响应函数,参数为xhr * error 请求失败后响应函数,参数为xhr * }); */ www.2cto.com Ajax = function() { function request(opt) { function fn() { } var url = opt.url || ""; var as...
FastClick现在有现成的插件fastclick可以解决这个问题,但是也有弊端:GitHub上最新版本的插件大小为25.4kb,轻量为趋势,能省则省。它的核心思想是取消默认的click时间,判断当前dom节点的类型进行相应的操作,这个判断过程较为繁琐。MyTapEvent本人最近在做微信项目,由于fastclick插件存在一定弊端,因此开发了一个简单的tap事件,主要思想有以下几点:Thinking一次tap事件包含touchstart和touchmove(轻微移动)以及touchend三种...
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢?一、 生成实例对象的原始模式假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性。var Cat = { name : ,color : }现...
JavaScript中的封装封装简单地说就是让外界只能访问对象的共有变量和函数,隐藏细节和数据。js中有三种方法创建对象,分别为门户大开型、用命名规范区分私有变量、闭包创建真正的私有变量三种。 1.门户大开型,是实现对象的最基础的方法,所有方法与变量都是共有的外界可以访问。 var Book = function(name){ if(this.check(name)){ console.log("error"); throw new Error("name null"); } this.name = name; } Book.prototype ...
Slider类的功能说明: 1、可以控制任何一个页面上存在的div 2、slider在滑动的同时还可以实现透明度的变化,整个过程更平滑、更美观 3、可控性强,通过多个参数实现不同大小的div不同方向、不同速度的滑动 4、调用方便,一句话即可初始化,slider的隐现控制更为简单,详情参见代码例子 关于Slider类实现过程的说明: 有感于现在的网站经常使用所谓Web2.0模式的div隐现效果,前一段自己在网页上要实现一个,尝试成功后又想封装一个类...
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6) /*MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类) Ver 1.6*\ 制作时间:2006-08-29 (Ver 0.5) 发布时间:2006-08-31 (Ver 0.8) 更新时间:2007-01-31 (Ver 1.6) 更新说明: + 加入功能 * 修正、完善 1.6.070131 + 禁止鼠标控制暂停或继续 (将第9个参数设置为-1或者动态赋值将ScrollSetp设置为-1) + 判...
代码如下: document.execCommand("BackgroundImageCache",false,true); function ProcessBar(){ this.width = 256; this.height = 18; this.top = 0; this.left = 0; this.backImg = "process_back.gif"; this.foreImg = "process.gif"; this.backDiv = document.createElement("div"); this.foreDiv = document.createElement("div"); this.fontDiv = document.createElement("div"); this.isMo...
所有的地址数据都放在js文件里面,调用该控件的方法很简单: 输出省份或省市联动。比如 new AreaCtrl("省份","城市"),那么只有2个下拉框,地址精确到城市。 area 有2个属性,2个方法。 属性: name 定义控件名称。值必须是数组类型,比如 ["Province","City","Area"],将会给3个下拉框定义其name属性,分别为Province,City,Area。 value 初始化控件的默认值。其值必须是地区编码数字,比如广东的编码是 440000,深圳的编码是4403...