Skip to content

Instantly share code, notes, and snippets.

@brothertao
brothertao / this.js
Created January 29, 2013 09:23
有关javascript的this
var a = {
b:function() { console.log(this); }
}
//求下面的输出
a.b();
c = a.b();
(1, a.b)();
(a.b)()
@brothertao
brothertao / sss.js
Last active December 17, 2015 11:39
simple static server use nodejs usage: cp this file to you want serve directory and run node sss.js [port] eg: cp sss.js /opt/www node sss.js 8888
var connect = require('connect');
var port = parseInt(process.argv[2]) || 3000;
var app = connect()
.use(connect.logger('dev'))
.use(connect.static(__dirname))
.use(connect.directory(__dirname))
.use(function(req, res){
res.end('wrong url\n');
})
.listen(port);
@brothertao
brothertao / loadscript.js
Created May 21, 2013 08:58
load script to chrome page
(function(window) {
var document = window.document;
var loadScript = function(uri) {
var script = document.createElement('script');
script.src = uri;
document.querySelector('head').appendChild(script);
};
window.loadScript = loadScript;
})(window)
(function(window) {
if (window.Float32Array) return;
var unsigned = 0;
var signed = 1;
var floated = 2;
function TypedArray(klass, arg, offset, length) {
var a, b, bits, i, imax;
if (Array.isArray(arg)) {
@brothertao
brothertao / getAttrSafe.js
Created January 3, 2014 01:33
安全获取对象属性值
function getAttrSafe(obj, keyChain, delimiter) {
delimiter = delimiter || '.';
if (!keyChain) { throw Error('keyChain should not be a empty value')};
var keys = keyChain.split(delimiter);
console.log(keys);
try {
for (var i = 0; i < keys.length; i++) {
obj = obj[keys[i]]
if (obj === undefined) { return null;};
@brothertao
brothertao / jquery.mockhistory.js
Created January 24, 2014 03:33
当浏览器的history不好用的时候,可以试试这个。当然这种情况出现的概率很低
(function($) {
var key = 'history:mock';
var historyDb = {
cursor: null,
action: null,
urls: []
};
function saveState() {
sessionStorage.setItem(key, JSON.stringify(historyDb));
}
@brothertao
brothertao / sort_by_field.php
Last active September 8, 2015 11:42
php sort multidimension array by field
<?php
function msort(&$data, $field, $order='asc') {
return usort($data, function($a, $b) use ($field, $order) {
return $order==='asc' ? $a[$field] < $b[$field] : $a[$field] > $b[$field];
});
}
//example
$data = array(array('t'=>1, 'p'=>'aBc'), array('t'=>3, 'p'=>'aBb'));
$rzt = msort($data, 't', 'asc');
@brothertao
brothertao / SortHelper.php
Last active November 25, 2016 05:28
sort by field use class
<?php
class SortHelper {
private static $field;
static function byField(&$data, $field) {
self::$field = $field;
return usort($data, array('self', 'cmp'));
}
private static function cmp($a, $b) {
return $a[self::$field] > $b[self::$field];
}
@brothertao
brothertao / closure.js
Last active September 15, 2015 04:59
闭包是什么?
function testClosure(paramClosure) {
var innerClosure = 100;
return function() {
paramClosure++;
innerClosure--;
}
}