JavaScript 获取地址栏参数

1.

function a() {
    console.log(this);
}
a.call(null);

window

如果第一个参数传入的对象调用者是null或者undefined的话,call方法将把全局对象(也就是window)作为this的值。所以,不管你什么时候传入null,其this都是全局对象window,

所以该题目可以理解成如下代码:

function a() {
    console.log(this);
}
a.call(window);

获取地址栏参数,并将其转换成一个对象

function getArgs() {
    var args = new Object();
    var query = location.search.substring(1);
    query = query.replace(/\+/g, " ");
    var pairs = query.split("&"); // Break at ampersand
    for (var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('='); // Look for "name=value"
        if (pos == -1) continue; // If not found, skip
        var argname = pairs[i].substring(0, pos); // Extract the name
        var value = pairs[i].substring(pos + 1); // Extract the value
        value = decodeURIComponent(value); // Decode it, if needed
        args[argname] = value; // Store as a property
    }
    return args;
}
var data=getArgs();

 一个地址获取域名数组

var getHost = function (url) {
    var prev = "";
    var result = [];
    var index = url.indexOf('https');
    if (index > -1) { url = url.replace("https://", ""); prev = "https://"; }
    var index2 = url.indexOf("http");
    if (index2 > -1) { url = url.replace("http://", ""); prev = "http://"; }
    var index3 = url.indexOf('/');
    var host = url.substring(0, index3);
    result.push(host);
    result.push(prev + host);
    return result;
}

var url="https://pgw.grapay.net/Test/index.htm";

var result=getHost(url);

result[0]:pgw.grapay.net

result[1]:https://pgw.grapay.net

3.方法的声明

        console.log(add);
        function add(x) { return x + 1; }
        console.log(add);
        function add(x) { return x + 3; }
        console.log(add);

        console.log(fun);
        var fun = function (x) { return x + 1; }
        console.log(fun);
        var fun = function (x) { return x + 3; }
        console.log(fun);

 

 function add(x) { return x + 1; }
        console.log(add(1));
        function add(x) { return x + 3; }
        console.log(add(1));

        var fun = function (x) { return x + 1; }
        console.log(fun(1));
        var fun = function (x) { return x + 3; }
        console.log(fun(1));

可以看出这两种声明的不同

 4.关于(,,,,,,)这样的返回结果

var f = (function f(){ return "1"; }, function g(){ return 2; })(); 
typeof f;
 "number"

逗号操作符的使用可以很混淆,但这段说明它的行为:
var x = (1, 2, 3); 
x; 

x的值是3,这表明,当你有一系列的组合在一起,并由逗号分隔的表达式,它们从左到右进行计算,但只有最后一个表达式的结果保存。由于同样的原因,这个问题可以改写为减少混乱:

var f = (function g(){ return 2; })(); 
typeof f; 

关于逗号表达式:
原文:
http://www.2ality.com/2012/09/expressions-vs-statements.html
译文:
http://www.cnblogs.com/ziyunfei/archive/2012/09/16/2687589.html

 5.delete

http://www.cnblogs.com/aaronjs/p/3172112.html#2832944

posted @ 2013-09-09 14:51  hongdada  阅读(320)  评论(0编辑  收藏  举报