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