免费刷金币,请点击这里
TE社区 > 前端技术
客服QQ:1206116161

浅析Javascript中bind()方法的使用与实现

lalalanima 于 2018-02-01 20:00:45 创建话题
(2)
(0)
举报

在讨论bind()方法之前我们先来看一道题目:

var altwrite = document.write; 
altwrite("hello"); 
//1.以上代码有什么问题
//2.正确操作是怎样的
//3.bind()方法怎么实现

对于上面这道题目,答案并不是太难,主要考点就是this指向的问题,altwrite()函数改变this的指向global或window对象,导致执行时提示非法调用异常,正确的方案就是使用bind()方法:

altwrite.bind(document)("hello") 
当然也可以使用call()方法:

altwrite.call(document, "hello") 
本文的重点在于讨论第三个问题bind()方法的实现,在开始讨论bind()的实现之前,我们先来看看bind()方法的使用:

绑定函数
bind()最简单的用法是创建一个函数,使这个函数不论怎么调用都有同样的this值。常见的错误就像上面的例子一样,将方法从对象中拿出来,然后调用,并且希望this指向原来的对象。如果不做特殊处理,一般会丢失原来的对象。使用bind()方法能够很漂亮的解决这个问题:

this.num = 9; 
var mymodule = { 
 num: 81,
 getNum: function() { return this.num; }
};

module.getNum(); // 81

var getNum = module.getNum; 
getNum(); // 9, 因为在这个例子中,"this"指向全局对象

// 创建一个'this'绑定到module的函数
var boundGetNum = getNum.bind(module); 
boundGetNum(); // 81 

偏函数(Partial Functions)

Partial Functions也叫Partial Applications,这里截取一段关于偏函数的定义:

Partial application can be described as taking a function that accepts some number of arguments, binding values to one or more of those arguments, and returning a new function that only accepts the remaining, un-bound arguments.

这是一个很好的特性,使用bind()我们设定函数的预定义参数,然后调用的时候传入其他参数即可:

function list() { 
 return Array.prototype.slice.call(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]

// 预定义参数37
var leadingThirtysevenList = list.bind(undefined, 37);

var list2 = leadingThirtysevenList(); // [37] 
var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3] 

和setTimeout一起使用

一般情况下setTimeout()的this指向window或global对象。当使用类的方法时需要this指向类实例,就可以使用bind()将this绑定到回调函数来管理实例。

function Bloomer() { 
 this.petalCount = Math.ceil(Math.random() * 12) + 1;
}

// 1秒后调用declare函数
Bloomer.prototype.bloom = function() { 
 window.setTimeout(this.declare.bind(this), 1000);
};

Bloomer.prototype.declare = function() { 
 console.log('我有 ' + this.petalCount + ' 朵花瓣!');
};

注意:对于事件处理函数和setInterval方法也可以使用上面的方法

绑定函数作为构造函数

绑定函数也适用于使用new操作符来构造目标函数的实例。当使用绑定函数来构造实例,注意:this会被忽略,但是传入的参数仍然可用。

function Point(x, y) { 
 this.x = x;
 this.y = y;
}

Point.prototype.toString = function() { 
 return this.x + ',' + this.y; 
};

var p = new Point(1, 2); 
p.toString(); // '1,2'


var emptyObj = {}; 
var YAxisPoint = Point.bind(emptyObj, 0/*x*/); 
// 实现中的例子不支持,
// 原生bind支持:
var YAxisPoint = Point.bind(null, 0/*x*/);

var axisPoint = new YAxisPoint(5); 
axisPoint.toString(); // '0,5'

axisPoint instanceof Point; // true 
axisPoint instanceof YAxisPoint; // true 
new Point(17, 42) instanceof YAxisPoint; // true 

上面例子中Point和YAxisPoint共享原型,因此使用instanceof运算符判断时为true。

捷径

bind()也可以为需要特定this值的函数创造捷径。

例如要将一个类数组对象转换为真正的数组,可能的例子如下:

var slice = Array.prototype.slice;

// ...

slice.call(arguments); 

如果使用bind()的话,情况变得更简单:

var unboundSlice = Array.prototype.slice; 
var slice = Function.prototype.call.bind(unboundSlice);

// ...

slice(arguments); 

实现

上面的几个小节可以看出bind()有很多的使用场景,但是bind()函数是在 ECMA-262 第五版才被加入;它可能无法在所有浏览器上运行。这就需要我们自己实现bind()函数了。

首先我们可以通过给目标函数指定作用域来简单实现bind()方法:

Function.prototype.bind = function(context){ 
 self = this; //保存this,即调用bind方法的目标函数
 return function(){
   return self.apply(context,arguments);
 };
};

考虑到函数柯里化的情况,我们可以构建一个更加健壮的bind():

Function.prototype.bind = function(context){ 
 var args = Array.prototype.slice.call(arguments, 1),
 self = this;
 return function(){
   var innerArgs = Array.prototype.slice.call(arguments);
   var finalArgs = args.concat(innerArgs);
   return self.apply(context,finalArgs);
 };
};

这次的bind()方法可以绑定对象,也支持在绑定的时候传参。

继续,Javascript的函数还可以作为构造函数,那么绑定后的函数用这种方式调用时,情况就比较微妙了,需要涉及到原型链的传递:

Function.prototype.bind = function(context){ 
 var args = Array.prototype.slice(arguments, 1),
 F = function(){},
 self = this,
 bound = function(){
   var innerArgs = Array.prototype.slice.call(arguments);
   var finalArgs = args.concat(innerArgs);
   return self.apply((this instanceof F ? this : context), finalArgs);
 };

 F.prototype = self.prototype;
 bound.prototype = new F();
 return bound;
};

这是《JavaScript Web Application》一书中对bind()的实现:通过设置一个中转构造函数F,使绑定后的函数与调用bind()的函数处于同一原型链上,用new操作符调用绑定后的函数,返回的对象也能正常使用instanceof,因此这是最严谨的bind()实现。

对于为了在浏览器中能支持bind()函数,只需要对上述函数稍微修改即可:

Function.prototype.bind = function (oThis) { 
  if (typeof this !== "function") {
   throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
  }

  var aArgs = Array.prototype.slice.call(arguments, 1), 
    fToBind = this, 
    fNOP = function () {},
    fBound = function () {
     return fToBind.apply(
       this instanceof fNOP && oThis ? this : oThis || window,
       aArgs.concat(Array.prototype.slice.call(arguments))
     );
    };

  fNOP.prototype = this.prototype;
  fBound.prototype = new fNOP();

  return fBound;
 };

以上这篇浅析Javascript中bind()方法的使用与实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持TE网络。

扫码关注TE官方微博 扫码关注TE官方微博
js中的如何定位固定层的位置 js获取height和width的方法说明 js实现图片和链接文字同步切换特效的方法 Mysql Sql语句注释大全 vue之父子组件间通信实例讲解(props、$ref、$emit) JS获取网址中指定值的正则函数 JavaScript jQuery 中定义数组与操作及jquery数组操作 苹果Mac系统中如何彻底删除iTunes中的歌曲 css别忘记清除浮动clear both JS实现可点击展开与关闭的左侧广告代码 Ruby简洁学习笔记(二) 类继承、属性、类变量 获得SQL数据库信息的代码 LESSCSS让CSS使用起来更加灵活成就CSS动态化 javascript动画对象支持加速、减速、缓入、缓出的实现代码 JSP与JS交互问题 值传递 JS常用正则表达式总结 ThinkPHP+jquery实现“加载更多”功能代码 JavaScript高级程序设计 事件学习笔记 iOS系统缓存方面开发的相关基础 MAC Safari浏览器使用英语朗读功能解决不懂读音造成的困扰 JavaScript 七大技巧(二) Jquery组件easyUi实现选项卡切换示例 基于Android的服务器端程序实例 关于Ajax请求中传输中文乱码问题的解决方案 Android带气泡的第三方Tab选项卡 bootstrap侧边栏圆点导航 详解Linux中关于引号的那些事 Ubuntu登录界面怎么截图? 基于jquery的拖动布局插件 字太多用...代替的方法(两种) 纯css实现背景图片半透明内容不透明的方法 js与jQuery 获取父窗、子窗的iframe 对TensorFlow的assign赋值用法详解 浅谈innodb的索引页结构,插入缓冲,自适应哈希索引 【网页设计】分享E-WebTemplates国外精美网页模板(FLASH+PSD源文件+HTML) bash脚本编程学习之算术运算与文件查找 Jquery对数组的操作技巧整理 jquery tab插件精简版分享 管理员登录设计(第7节) JavaScript基于原型链的继承 jquery ajax中使用jsonp的限制解决方法 为Linux系统的服务器设置防火墙的方法 CentOS怎么无法连通端口?解决CentOS无法连通端口的方法 Python基础之函数用法实例详解 vue.js中mint-ui框架的使用方法 jQuery 实现双击编辑表格功能 Ajax提交表单并接收json实例代码 jQuery Ajax Post 回调函数不执行问题的解决方法 jQuery的基本概念与高级编程 JS基于cookie实现来宾统计记录访客信息的方法 JavaScript中this的四个绑定规则总结 数据库表的查询操作实践演练(实验三) Node.js开发第三方微信公众平台 node.js中的http.request方法使用说明 iframe式ajax调用示例 Css利用js的expression实现的效果 把网页中的(电话,qq等数字)生成图片的ASP程序 JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码) PHP创建桌面快捷方式的实例代码 浅谈js的ajax的异步和同步请求的问题 requirejs按需加载angularjs文件实例 window下使用nginx提供文件下载服务器配置 Flex 改变树结点图标的2种方法介绍 JS函数的定义与调用方法推荐 javascript三种代码注释方法 jsp地址栏传中文显示乱码解决方法分享 .NET逻辑分层架构总结 java编程约瑟夫问题实例分析 JavaScript黑洞数字之运算路线查找算法(递归算法)实例 sql 取两值之间的数据方法(例:100-200之间的数据) Ext JS动态加载JavaScript创建窗体的方法 Vue路由切换时的左滑和右滑效果示例 vue实现验证码输入框组件 jquery dataTable 后台加载数据并分页实例代码 node.js cookie-parser之parser.js asp目录读写权限检测脚本 TestFolder 一个可拖拽列宽表格实例演示 PHP数字前补0的自带函数sprintf 和number_format的用法(详解) PHP 二维数组根据某个字段排序的具体实现 Bootstrap 模态框自定义点击和关闭事件详解 Nodejs学习笔记之NET模块 springboot 在ftl页面上使用shiro标签的实例代码 详解Android(共享元素)转场动画开发实践 Jquery 效果使用详解 ajax发表 读取 评论 Maven本地缓存清理小工具的实现 MongoDB使用自带的命令行工具进行备份和恢复的教程 linux下ping命令使用详解 php中导出数据到excel时数字变为科学计数的解决方法 Bootstrap源码解读下拉菜单(4) Shell中判断字符串是否为数字的6种方法分享 jQuery中live()方法用法实例 通过url查找a元素并点击 javascript实现checkbox全选的代码 js数组的操作指南 JavaScript参数个数可变的函数举例说明 Yii框架实现图片上传的方法详解 PHP 之 写时复制介绍(Copy On Write) nodejs 实现钉钉ISV接入的加密解密方法 Vue-Router实现页面正在加载特效方法示例 Java编程线程同步工具Exchanger的使用实例解析 JS动态遍历json中所有键值对的方法(不知道属性名的情况) php实现生成验证码实例分享 js实现的星星评分功能函数 asp.net中显示1至20相同数字相乘的结果,若值比50小就不显示 Javascript简单改变表单元素背景的方法 ASP.NET中 Wizard 控件的使用方法 python实现百度语音识别api JWT+Log4net配置与使用详解 利用iOS动画来模拟音量振动条的实现 CentOS 安装 Mongodb详解(在线和离线) javascript中的document.open()方法使用介绍 mac应用程序安装在哪个目录?苹果电脑mac如何查看已安装程序 JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个) js 小贴士一星期合集 PHP后台微信支付和支付宝支付开发 微信小程序 参数传递详解 SQL Server中的连接查询详解 PHP查找与搜索数组元素方法总结 html5简介_动力节点Java学院整理 js创建数据共享接口——简化框架之间相互传值 PHP 表单提交及处理表单数据详解及实例 解决phpmyadmin中缺少mysqli扩展问题的方法 jquery+ajax实现直接提交表单实例分析 动态刷新 dorado树的js代码 正则匹配密码只能是数字和字母组合字符串功能【php与js实现】 130个漂亮CSS布局站点参考 Oracle之SQL语句性能优化(34条优化方法) vue cli 全面解析 Vue.js 单页面多路由区域操作的实例详解 PHPExcel内存泄漏问题解决方法 JavaScript function 的 length 属性使用介绍 浅谈Java中对类的主动引用和被动引用 Node.js实现批量去除BOM文件头 nodejs创建web服务器之hello world程序 Laravel框架中实现使用阿里云ACE缓存服务 python读取和保存图片5种方法对比 Python Tkinter GUI编程入门介绍 一款纯css3实现的漂亮的404页面的实例教程 浅析Ruby中的类对象的概念 Python使用matplotlib实现绘制自定义图形功能示例 5秒后跳转效果(setInterval_SetTimeOut) Python 爬虫爬取指定博客的所有文章 jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片) SQL Server数据类型转换方法 MongoDB备份、还原、导出、导入、克隆操作示例 Yii2.0 Basic代码中路由链接被转义的处理方法 Javascript添加监听与删除监听用法详解 CentOS7下MySQL5.7安装配置方法图文教程(YUM) asp.net中倒计时自动跳转页面的实现方法(使用javascript) Vue全局分页组件的实现代码 Rxjava实现发送验证码倒计时功能 Javascript计算二维数组重复值示例代码 jsp servlet javaBean后台分页实例代码解析 MySQL5.7不停业务将传统复制变更为GTID复制的实例 视觉直观感受若干常用排序算法 ParseInt函数参数设置介绍 jQuery实现类似淘宝网图片放大效果的方法 CentOS虚拟机如何进入救援模式? php根据日期判断星座的函数分享 Swift循环遍历集合的方法总结分享 JQuery判断radio是否选中并获取选中值的示例代码 jquery 图片 上一张 下一张 链接效果(续篇) ThinkPHP3.2.3数据库设置新特性 正则应用之 日期正则表达式 jquery动态导航插件dynamicNav用法实例分析 Linux下rar命令详解 简单谈一谈Java中的Unsafe类 jQuery去掉字符串起始和结尾的空格(多种方法实现) python调用windows api锁定计算机示例 JS仿淘宝搜索框用户输入事件的实现 python编程培训 python培训靠谱吗 js判断IE浏览器版本过低示例代码 Linux下Chrome地址栏输入卡顿该怎么办? react-native android状态栏的实现 JavaScript如何动态创建table表格 js代码延迟一定时间后执行一个函数的实例 JavaScript实现简单的日历效果 Oracle与SQL Server在企业应用的比较 JavaScript获取FCK编辑器信息的具体方法 javascript之Boolean类型对象 解决PHP程序运行时:Fatal error Maximum execution time of 30 seconds exceeded in的错误提示 js实现String.Fomat的实例代码 Button在IE6、7下的自适应宽度问题解决方法 ASP.NET 站点地图(sitemap)简明教程 使用AngularJS制作一个简单的RSS阅读器的教程 MySql安装启动两种方法教程详解 angular.js和vue.js中实现函数去抖示例(debounce) python 实现网上商城,转账,存取款等功能的信用卡系统 js实现图片点击左右轮播 进程的内核栈是什么?浅谈Linux的进程内核栈 某个aspx页面突然死了连日志也没有的解决方法 even事件浏览器兼容性实例介绍 全面解析bootstrap格子布局 Bootstrap Table使用整理(二) 详解Html a标签中href和onclick用法、区别、优先级别 Python制作刷网页流量工具 jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动) PHP生成静态HTML页面最简单方法示例 asp操作access提示无法从指定的数据表中删除原因分析及解决
jQuery左侧大图右侧小图切换代码.zip 纯CSS3制作中国联通logo图标样式.zip 吉他乐器爱好者网站模板.zip jquery按关键词多选列表框选项.zip 微信小程序源码-美妆商店 SSH+DWR+Ext房屋出租系统 浅蓝色宽屏商务网站模板.zip jQuery图片轮播幻灯片插件Diapo.zip 可拖动图片弹出层插件layer.js.zip 【ASP.NET源码】InfoPath 网络服务器 v5.8.2_infopath.zip jQuery电视墙高亮幻灯片.zip jQuery MP3播放器插件.zip 都市供求信息网-struts2架构的例程序(sqlserver数据库) jQuery窗口顶部消息通知代码.zip jQuery触摸鼠标双击事件检测代码.zip jQuery滑动复选框操作菜单.zip 个性博客CSS3网页模板.zip 奔跑的男孩HTML网页模板.zip jQuery幻灯片插件Skippr.zip jQuery左右滑动切换图片代码.zip jQuery实用幻灯片特效代码.zip SlidingMenu沉浸式Demo CSS3实现伪对象立体按钮效果.zip Android获取指定应用的流量统计 解决方案CSS网页模板.zip jQuery表单设计器自由拖拽特效.zip 纯CSS3实现眨眼动画特效.zip banner鼠标移动图片跟随滚动.zip html5点击刷新验证码特效.zip 基于jQuery通用幻灯片特效.zip Android 基于百度媒体云人脸识别 jQuery鼠标经过显示动画边框特效.zip jq穿梭滑动幻灯片.zip android 超酷书架 jQuery tab标签列表_2.zip Oracle数据库高可用视频教程 7.84G 回到顶端插件ScrollUp.zip MagicZoom.js放大镜插件.zip wp经典AesRoom2.2版主题.zip css3鼠标悬停图标动画按钮切换.zip ECShop 趣玩2012模板.zip 域名主机销售html整站模板.zip 网页加载进度条插件MProgress.js.zip 微信小程序 - 框架.zip jQuery猎豹橙色大巴动态背景特效.zip 纯CSS3实现动态火车行驶特效.zip 微信小程序源码-图片自适应 ,富文本解析 Android 购物车动画 【ASP.NET源码】拓文asp.net网站内容管理系统 v6.1_topwincms.zip jQuery天空流星雨动画特效.zip jQuery歌词同步MP3播放器代码.zip jquery内容模糊隐藏.zip 蓝绿色发展CSS网页模板.zip jQuery仿百度新闻网站导航条特效.zip 自适应网页宽度jquery焦点图.zip Myeclipse搭建Spring+Spring Mvc+Mybatis+Maven+数据库Mysql项目de 蓝色图片下载应用响应式手机网站.zip 【PHP源码】PHPfans论坛v3.4_phpfansbbs34.zip java web开发无纸化办公管理系统 jQuery带视觉差效果图片轮播代码.zip jQuery文字突出显示效果.zip jQuery手风琴图片轮播切换.zip 蓝色互联网科技公司模板下载.zip jQuery新闻竖直滚动切换特效.zip jquery全屏图片滑动切换.zip CSS3实现答题卡翻页切换特效.zip html5手机微信摇一摇特效.zip myibatis+spring+springmvc框架整合 韩国购物网产品推荐展示效果.zip 腾讯易迅网shopex模板.zip 国外别墅房产企业网站模板.zip 一款改自Reeoo的WordPress淘宝客主题模板.zip jQuery多层图片视觉差移动特效.zip jQuery响应式幻灯片特效.zip CSS3火焰黑洞动画背景特效.zip 网站建设开发公司网站模板.zip 基于CSS3和jQuery滑动特效.zip 阿里ocs客户端与spring集成,生命周期由spring管理 移动端左右+自动滚动jQuery插件.zip 白色扁平设计公司网站模板.zip 蓝色样式婚纱摄影模板.zip HTML5 Canvas圆形灯笼时钟动画特效.zip jQuery仿新浪微博大厅滚动效果v2.0.zip HTML5石头剪刀布手机端小游戏代码.zip jQuery实现点击替换图片.zip 橙色西餐美食网站模板.zip jquery包含多种类型的日期选择器.zip jQuery自适应窗口大小轮播图特效.zip jquery书架式图片展示特效.zip jQuery 3D弹出窗口变换特效.zip 军事拓展训练公司网站模板.zip jquery大号箭头焦点图.zip 人力资源管理平台后台模板.zip jQuery图片摇晃显示效果.zip ECSHOP也买酒2013模板.zip 彩森视频网络电台DQUS版 手机客户端设计网页模板.zip HTML5 SVG圆盘时钟动画.zip 【PHP源码】google全站搜索php程序1101.net版_google1101.net.zip 【PHP源码】Media新闻文章网站系统 v4.0_enews.zip 基于Java ME无线网络移动端的俄罗斯方块游戏的实现(论文,源代码) 类似播放器的jQuery图片切换.zip RecyclerView实现时光轴 Spring Cloud Zuul微服务总结及其项目入门实例 模板堂韩购街ecshop模板.zip html5生成图案二维码插件.zip 儿童用品公司HTML5网站模板.zip PagedDragDropGrid拖拽排序 霓虹灯灯光HTML5炫彩模板.zip jQuery完整的职业选择插件下载.zip Tap4Fun游戏网站jQuery焦点图.zip jquery+css3华丽滚动效果.zip jQuery右侧可伸展固定浮动菜单代码.zip 响应式+自适应+手机短信验证登录 网页下拉顶部导航缩小并固定.zip 化工企业HTML5网站模板.zip jQuery鼠标滑过背景视觉差动画特效.zip jQuery从页面右上角弹出的浮层代码.zip 微信小程序源码-朴实商城 互联网案例展示html5模板.zip jQuery滑块插件nstSlider.zip Java 简易淘宝商城源码加Mysql数据库 css3荷花开放效果.zip jquery天猫分类导航banner切换.zip jquery倾斜菜单上拉效果.zip 纵向索引按钮jquery焦点图.zip jQuery仿淘宝网拖动滑块验证码代码.zip css圆角提示框.zip Android屏幕适配之Google百分比布局库的扩展 jQuery带搜索跳转分页样式代码.zip jquery仿FLASH筋斗云动态菜单.zip 一元云购商城网站模板下载.zip jquery文件上传表单.zip Jsp在线音乐管理系统 学习读书上课网站模板.zip 仿支付宝支付密码+随机数字键盘 HTML5+CSS3滑块动画菜单.zip 【PHP源码】KCOUNTER网站流量计数器中文版_kcounter.zip css3图标悬停导航菜单.zip jQuery将一组数据添加到另一组代码.zip jquery鼠标经过图片抖动.zip 【PHP源码】glFusion 1.1.4_glfusion-1.1.4.zip jQuery黑白彩色图片切换.zip 电子产品设计网站模板.zip 企业产品展示CSS3绿色模板.zip 蓝色艺术家居设计CSS模板.zip easyui经典后台项目管理系统框架模板源代码下载 jquery仿wp动画悬浮标签云插件.zip jQuery饼状图比例分布数据显示代码.zip jQuery+css3渐变焦点图.zip CSS3鼠标悬停图片文字动画效果代码.zip jQuery手风琴式相册图片特效.zip jQuery文字选项问卷调查表单提交.zip jQuery点击添加更多图片瀑布流代码.zip 游戏网站jQuery手风琴切换.zip jQuery紫色不规则导航特效.zip jQuery游戏网站手风琴切换代码.zip 微信小程序源码-【推荐】九毛百货商城 jquery带暂停播放和时间轴幻灯片.zip jQuery仿QQ空间鼠标悬停全图预览.zip css3用户体验注册表单.zip boostrap可拖动文件批量上传代码.zip 2015贝贝网ecshop模板.zip 【PHP源码】杰易电子商务系统 v1.0 正式版_jyb2bv1.0.zip css3彩带导航菜单.zip 户外活动专题网页模板.zip 白色商务html网页模板.zip CSS3 iPhone锁屏解锁动画特效.zip Discuz! x2清爽风格模板.zip js右下角消息弹出通知插件notyf.zip 手机应用图标设计模板.zip 仿安卓Android扁平图标特效.zip jQuery推动切换幻灯片.zip Bootstrap数据统计表后台网站模板.zip jQuery屏幕焦点图切换.zip 支持平滑抖动切换jQuery轮播图代码.zip jQ键盘控制焦点图.zip 基于shiro前后端分离分布式权限管理 微信小程序源码-探趣各大社交平台 界面美化Javascript类库.zip 【PHP源码】Discuz!论坛系统 7.0.0 繁体BIG5 整合安装包 Build 20090821_discuz_7.0.0_full_tc_big5.zip 纯CSS3青蛙表情动画特效.zip 【PHP源码】phpcms网站管理系统 V2.4简体中文正式版 Build20061207_phpcms_v2.4_free_gb2312_20051216.zip 微信小程序源码-母婴商城 【PHP源码】国外PHP百万格子程序汉化版_bwgz.zip jquery+css3动态数据对比代码.zip jquery熔岩灯导航菜单特效.zip 浅蓝色扁平风格CSS3模版.zip activiti 基础 web项目 spring mvc 微信小程序源码-客家旅运带后端 【PHP源码】Pligg v9.9.5 Beta_pligg9.9.5.zip jQuery淡入淡出下拉菜单.zip Canvas星星跟流星背景动画特效.zip 房地产新楼盘门户网站模板.zip 【PHP源码】PHP下载系统 可按拼音生成下载页面的程序_dir.zip jQuery仿天猫商品飞入购物车代码.zip 葡萄酒餐厅网站模板.zip 微信小程序源码-相册;处理用户信息 jquery网页背景视差滚动代码.zip jQuery时间轴插件Timelinr.zip
举报X