复制对象的几个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//方法1 原型链
Object.prototype.Clone = function() {
var objClone;
if ( this.constructor == Object ) objClone = new this.constructor();
else objClone = new this.constructor(this.valueOf());
for ( var key in this ){
if ( objClone[key] != this[key] ){
if ( typeof(this[key]) == 'object' ) {
objClone[key] = this[key].Clone();
}else {
objClone[key] = this[key];
}
}
}
objClone.toString = this.toString;
objClone.valueOf = this.valueOf;
return objClone;
}

more >>

微信开发 config:invalid url domain

最近公司在给南方航空做个微信公众平台H5的小项目,需要使用微信jssdk.
前期需求基本不明确所以简单做下技术语言,写些小demo
首先遇到的问题是需要服务器和域名,公司比较抠,所以用的是自己电脑加内网映射,可以参考上一篇文章。
<–! more –>
微信提供了web开发者工具,可以模拟手机端,并且能查看到控制台和jssdk调用情况,需在微信公众号后台启用开发者中心,在开发者工具>>web开发者界面向开发者发送绑定邀请

微信提供了接口测试号申请微信公众平台接口调试工具可以很方便的使用测试号进行测试开发

js安全域名使用不带协议和路径的域名即可比如:http://xiaozhu.test.abc.com/test.html,填写xiaozhu.test.abc.com

内网穿透工具

内外穿透是网络连接术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。

内网穿透有什么用,说白了也就是可以轻松的找到所要需找的电脑,并且可以提高访问和下载速度,以便我们可以轻轻松松的实现远距离文件传输、远距离办公等。

最近在做微信公众号开发,使用测试账号,需要一个域名和服务器,暂属于技术预言阶段,所以没有使用公司的服务器,自己的服务器也没动所以用到了内网穿透
之前用过国产工具有花生壳,用起来也挺简单的,不过现在已经开始收费了,虽然也有免费版的但是需要身份证验证.

第二个选择是神器ngrok,支持跨平台,但是ngrok@2.X之后版本不再免费映射到指定域名前缀,使用随机分配前缀.国内也有人搭建公用的ngrok服务器,大家可以访问http://www.ngrok.cc查看细节
下载ngrok
使用命令,映射到本地1234端口:

1
ngrok http 1234

ngrok有时候存在连接不稳定的情况,之后又改为使用XTunnel,使用方法也很简单
下载XTunnel
非Windows需Java运行环境

当然也还有其他的内网映射工具,像urtalhook,基于frp的公网服务,localtunnel这里就不赘述了

使用RaphaelJS绘制曲线

RaphaelJS是一个SVG库,使用起来很方便,简单的代码就可以实现复杂的动画
最近遇到一个功能,需要实现一条平滑的曲线.
使用Raphael做一个线条变化动画很简单,例:

1
2
3
var paper = Raphael("id");
var path = paper.path("M0 100 L 100 100");
path.animate({path:"M0 100 L50 100 100 100 "},1000)

就可以看到path的变化

本次做出的实际效果为:


more >>

URL字符串编码

在多个页面之间通信,经常会将参数放入URL中以传递到下个页面.但是在下个页面更改这个参数,避免页面重新跳转刷新可以将参数放到location.hash中,而非location.search中.(比如单页面应用,通常使用hash,已经保证收藏或者转发的URL指向相同的内容)

在火狐和低版本IE中,location中的中文会被转码,取到的location需要被转码才能拿到正确的数据.解码函数为decodeURIComponent
js中的编码函数有三个

1.escape
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: @ - _ + . / 。其他所有的字符都会被*转义序列替换。
对应的解码函数为unescape()

ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

2.encodeURI
对应解码函数为decodeURI

如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

3.encodeURIComponent
decodeURIComponent