分类目录归档:JavaScript

出一个面试题

// 上文
// 接受两个数字,返回 和
function b(n1, n2) {
    return n1 + n2;
}
/**
 * 问: 中间这个地方怎么做可以让下面的调用返回正确结果
 *     意即 使b也可以接受字符串格式的数字参数
 * PS: 不能用重写b方法来实现目的,尽量重用代码
 */
// 中间,请在这里做代码补全

// 下文
b('1', '2'); //能正确得到结果:3

不晓得这样的描述是否能让人领会到我的意图呢?
http://krasimirtsonev.com/blog/article/Dependency-injection-in-JavaScript

HTML5 XMLHttpRequest中的新功能

来源于:http://www.html5rocks.com/zh/tutorials/file/xhr2/

简介

HTML5 世界中有这样一位无名英雄:XMLHttpRequest。严格地说,XHR2 并不属于 HTML5。不过,它是浏览器供应商对于核心平台不断做出的改进中的一部分。我之所以将 XHR2 加入我们新的百宝囊中,就是因为它在如今复杂的网络应用中扮演了不可或缺的角色。

结果呢,我们这位老朋友来了个大变身,很多人都不知道它的新功能了。2 级 XMLHttpRequest 引入了大量的新功能(例如跨源请求、上传进度事件以及对上传/下载二进制数据的支持等),一举封杀了我们网络应用中的疯狂黑客。这使得 AJAX 可以与很多尖端的 HTML5 API 结合使用,例如 File System APIWeb Audio API 和 WebGL。

此教程重点介绍 XMLHttpRequest 中的新功能,尤其是可用于处理文件的功能。
Continue reading HTML5 XMLHttpRequest中的新功能

温习三角函数

最近遇到了,温习一下。
具体资料看这里:
http://zh.wikipedia.org/zh/三角函数
sin正弦函数

写了两个方法:

/// 计算邻边的长度
// h 斜边长度
// angle 斜边和邻边夹角角度, 0°直接返回斜边长
function adjacentSide(h, angle) {
    return angle ? Math.abs(h * Math.cos(Math.PI * angle / 180)) : h;
}

// 计算对边的长度
// h 斜边长度
// angle 斜边和邻边夹角角度, 0°直接返回0
function oppositeSide(h, angle) {
    return angle ? Math.abs(h * Math.sin(Math.PI * angle / 180)) : 0;
}

一种解析URL字符串的方法

利用a元素来解析url,09年就有这么巧妙的方法了,才发现。

// This function creates a new anchor element and uses location
// properties (inherent) to get the desired URL data. Some String
// operations are used (to normalize results across browsers).

function parseURL(url) {
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len ;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^\/])/,'/$1'),
        relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^\//,'').split('/')
    };
}

使用示例:

var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');

myURL.file;     // = 'index.html'
myURL.hash;     // = 'top'
myURL.host;     // = 'abc.com'
myURL.query;    // = '?id=255&m=hello'
myURL.params;   // = Object = { id: 255, m: hello }
myURL.path;     // = '/dir/index.html'
myURL.segments; // = Array = ['dir', 'index.html']
myURL.port;     // = '8080'
myURL.protocol; // = 'http'
myURL.source;   // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'

源自:http://james.padolsey.com/javascript/parsing-urls-with-the-dom/

如何抛弃jQuery?

jQuery实在太方便了,用惯了jQuery,也不能忘记如何写原生js,尤其IE8-的浏览器份额越来越少,写原生js也原来越容易和方便了。一个传送门,描述了替代jQuery某些方法的原生js写法,挺不错的,值的借鉴。

传送门:http://youmightnotneedjquery.com/