javascript小点

2017-08-28  本文已影响0人  2016_18点
1 将函数的实际参数转换成数组的方法
var args = [];
for (var i = 1; i < arguments.length; i++) {
args.push(arguments[i]);
}

2 把args数组中所有的子项展开传递给一个函数作为参数

3 JSON.parse()和JSON.stringify()
var str = '{"name":"huangxiaojian","age":"23"}'
JSON.parse(str);
结果:
{ 
  age:23,
  name:"huangxiaojian",
  _proto_:Object
}

注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。

var a = {a:1,b:2}
JSON.stringify(a);
结果:
"{"a":1,"b":2}"

4 console.dir()和console.log()

5 html()和text()

6 sort()使用方法
<script type="text/javascript">
function sortNumber(a, b)
{return a-b}

var arr = new Array(3)
arr[0] = "10"
arr[1] = "1000"
arr[2] = "1"

document.write(arr + "<br />")
document.write(arr.sort(sortNumber))
</script>
结果:
10,1000,1
1,10,1000

若将比较函数改为function sortNumber(a,b){b-a},结果则变为
10,1000,1
1000,10,1
比较函数返回一个小于0的数则第一个参数(a)排在前面,返回大于0的数则第一个参数(a)排在后面

7 &&和||在javascript中的另类用法

8 可以在if()语句中赋值
tag = false
if(tag = !tag){
} else {
}

tag = false;
那么:!tag肯定为true
然后:tag = !tag
所以:tag = true
也就是说:if(tag = !tag) 得到的tag值为true,会执行if语句。
这种用法的方便之处,例如:

var is_window = function() {
    if(window == undefined) {
        return false;
    } else {
        return window;
    }
}
if(win = is_window()) {
    console.log(win);
} else {
    console.log('不存在window');
}

9 js中点表示法和数组表示法

可以使用 “ . ”、“ [] ” 来访问对象属性
只能使用 “ . ” 来访问对象的方法

点表示法一般作为静态对象使用时来存取属性。
而数组表示法在动态存取属性时就非常有用。

在使用方括号语法时,应该将要访问的属性
字符串的形式放在方括号

alert(person["name"]); //"Nicholas"
alert(person.name); //"Nicholas"
或者通过变量访问属性:
var propertyName = "name";
alert(person[propertyName]); //"Nicholas"

10 获取当前日期及30天后的日期
var dateFormat = 'yyyy-MM-dd';
var date = new Date();
var initDateStartYear = date.getFullYear();
var initDateEndMonth = new Date().getMonth() + 2;
var initDateStartDate = date.getDate();
//第二个月 的总天数
var initEndDate = new Date(initDateStartYear,initDateEndMonth,0).getDate();
//第二个月超过12时,年份+1,月份变为1
 if(initDateEndMonth > 12){
        initDateStartYear += 1 ;
        initDateEndMonth = initDateEndMonth - 12;
}
//第二个月的总天数 小于 第一个月的总天数,第二个月天改为第二个月的最大天数
if(initEndDate < initDateStartDate) {
       initEndDate =  new Date(initDateStartYear,initDateEndMonth,0).getDate();
       initDateStartDate =  initEndDate;
}
initDateEndStr = initDateStartYear + '-' + initDateEndMonth + '-' + initDateStartDate;
this.dateStart = new Date().format(dateFormat);
this.dateEnd = new Date(initDateEndStr).format(dateFormat);
console.log(this.dateStart);
console.log(this.dateEnd);

(图中的60改为30)
setDate()方法可以通过增加的天数,自动改变月份和年份,不需要自己改变


11 typeof null ==="object"

12 js中两个等号(==)和三个等号(===)的区别
  1. "=="表示:equality -> 等同 的意思,"=="使用两个等号时,如果两边值的类型不同的时候,是要先进行类型转换后,才能做比较。
  2. "==="表示:identity -> 恒等 的意思,"==="使用三个等号时,是不需要做类型转换的,如果两边值的类型不同,就表示一定是不等的。

13 表单序列化注意点

我们先来讲讲表单中 中readonly和disabled的区别:

如果表单中使用的disabled那么用户是不能选择的,也就是说这个文本框是无法获取到焦点的,而readonly是可以获取到焦点,只是不能修改,为只读
最重要的一点, 在发送表单的时候,表单的控件属性没有name属性该字段不会发送,也不会形成键值对;表单控件属性是disabeld,则该字段不会发送,也不会形成键值对,没有选中的也不会发送。


14 this指向

首先分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象。


15 数组的 length 属性-不是只读的

数组的 length 属性很有特点——它不是只读的。通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。请看下面的例子:

var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
colors.length = 2;
alert(colors[2]); //undefined
数组 colors 一开始有 3 个值。将其 length 属性设置为 2 会移除最后一项(位置为
2 的那一项),结果再访问 colors[2] 就会显示 undefined 了。

var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
colors.length = 4;
alert(colors[3]); //undefined
其 length 属性设置为大于数组项数的值,则新增的每一项都会取得 undefined 值

16 js设置css样式
  1. 如果属性有'-'号,就写成驼峰的形式(如marginLeft
  2. 如果想保留 - 号,就中括号的形式
    element.style['text-align'] = '100px';
    element.style.height = '100px';
  3. 直接设置属性(只能用于某些属性,相关样式会自动识别)
    element.setAttribute('height', 100);
    element.setAttribute('height', '100px');

17 split()

split() 方法用于把一个字符串分割成字符串数组。
提示: 如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
注意: split() 方法不改变原始字符串。

var str="How are you doing today?";
var n=str.split();
-->How are you doing today?

var str="How are you doing today?";
var n=str.split("");
-->H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?

var str="How are you doing today?";
var n=str.split("o");
-->H,w are y,u d,ing t,day?

18 正则表达式

po.replace(/\d|(|)/g, "") 过滤po字符串中的数字和括号


19 concat

concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法:
arrayObject.concat(arrayX,arrayX,......,arrayX)
参数描述:
arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
返回值
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组

如下示例:
var a = [];
console.log(a.concat({a:10},1,[2,3]));
console.log(a);
打印结果
20 document.getElementsByName("name1 name2");-有效

getElementsByClassName\getElementsByName可以使用如下的写法:document.getElementsByName("name1 name2");
document.getElementsByName("class1 class2");
注意
1、name1与name2不是父子元素的name,是同一个元素的两个name名(同理class1和class2)。
2、对于display:none的元素,getElement...的方法也可以获取到。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script>
function show(){
    var el = document.getElementsByName("demoA1 demoSpan");
    alert(el.length)
}
</script>
</head>
<body>
<h1>我的第一个 JavaScript 程序</h1>
<p id="demo" name="demo" class="demoA1">这是一个段落
    <span name="demoA1 demoSpan" class="demoA1 demoSpan">spanspan</span>
</p>
<p id="demo" name="demo" class="demoA2">这是一个段落
    <span name="demoSpan" class="demoSpan">spanspan2</span>
</p>

<button type="button" onclick="show()" >点击</button>
</body>
</html>
上一篇 下一篇

猜你喜欢

热点阅读