本文系统梳理JavaScript核心知识点,涵盖类型判断、数组操作、日期处理、函数调用及对象属性定义。重点解析typeof与Object.prototype.toString的区别,详解数组迭代与归并方法,并介绍JSON序列化、with语句及属性描述符的高级用法,帮助开发者掌握JS基础与进阶技巧。
类型判断与基础数据类型处理
typeof 操作符返回一个字符串,其值可能为“undefined”、“boolean”、“string”、“number”、“object”或“function”之一。由于数组在 JavaScript 中被视为对象,因此 typeof 无法准确区分普通对象与数组。
NaN(Not a Number)用于表示非数值。函数 NaN(val) 若能将参数 val 转换为数字,则返回 false;否则返回 true。
parseInt(val, way) 函数用于解析字符串,其中 way 指定进制(如 2、4 等),返回 number 类型。与之对应的 num.toString(way) 方法则返回 string 类型的字符串。
Object 类型提供 hasOwnProperty(name) 方法,用于判断指定属性名 name 是存在于对象实例中,还是继承自原型链。
每个函数都包含一个 arguments 属性对象,用于记录传入的参数,其形式类似参数数组。通过 arguments.callee 可实现函数的递归调用。
数组操作与迭代方法
unshift 方法可从数组前端插入两个元素,并返回修改后的数组长度。结合 unshift 和 pop 方法,可以反向模拟队列的行为。
sort(compare) 方法用于数组排序,其中 compare(val1, val2) 函数在 val1 位于 val2 之前时返回 -1,在 val1 位于 val2 之后时返回正值(原文未明确具体值,通常为正数),若返回 0 则保持原有顺序不变。
splice 函数用于数组操作,语法为 splice(a1, a2, a3...)。其中 a1 和 a2 为必填参数,a1 表示起始位置,a2 表示要删除的项数,后续参数表示从该位置插入的新值。
indexOf 方法返回指定 val 在数组中的索引位置,而 lastIndexOf() 方法则从数组末尾开始向前搜索并返回位置。
数组迭代方法包括:every() 要求所有值返回 true 时才返回 true;filter() 返回所有使回调函数返回 true 的元素组成的数组;forEach() 仅执行函数,无返回值;map() 返回由函数调用结果组成的新数组;some() 与 every 相反,只要有一个元素返回 true 即返回 true。
示例代码:var everyRes = number.every(function(item, index, array) { return item > 2; }); // item、index、array 三个参数为必填项。
数组归并方法包括 reduce 和 reduceRight()。示例:var sum = values.reduce(function(prev, cur, index, array) { return prev + cur; }); 其中 prev 代表前一个累加值,cur 代表当前元素。
日期处理与函数调用机制
Date 类型可通过以下方式创建:var date = new Date(Date.parse("May 25, 2004")); 或 var date = new Date(Date.UTC(2015, 4, 5, 17, 55, 50));。
call 和 apply 方法的主要区别在于第一个参数指定 this(上下文对象),后续参数传递方式不同。
JSON 处理与对象属性管理
使用 var obj = eval("(" + data + ")") 可转换 JSON 字符串,JSON.parse(data) 也可实现相同功能。两者的区别在于 eval 将内容作为 JavaScript 代码解析,而 parse 仅将其转换为对象。
与 JSON.parse 对应的是 JSON.stringify 方法,用于将对象转换为 JSON 字符串。
判断一个对象是否为数组的方法为:Object.prototype.toString.call(o) == '[object Array]'。
使用 continue 跳出两层循环的方法(对 break 同样适用)如下所示:
var num = 0 ;
outer:
for(var i=0;i<10;i++)
for(var j=0;j<10;j++)
{
if(i==5&&j==5)
{
continue outermost ;
}
num++ ;
}
alert(num);//95
with 语句的使用示例如下:
var obj = {
search : "st" ,
name : "lala",
url : "www.jb51.net"
} ;
with(pbj){
var a = search ;
var b = name ;
var c = url ;
}
通过以下方式定义对象属性:
Object.defineProperty(obj, "key", {
configurable: true,
value: "value"
});
这样可使对象的属性变为只读。
使用 Object.defineProperties 可一次性添加多个属性。
Object.defineProperties(book,{
_year:{
value:2004
},
edition:{
value:1
},
year:{
get:function(){
return this._year ;
}
set:function(newValue){
if(newValue>2004)
{
this._year = newValue ;
edition++ ;
}
}
}
}
}) ;
以上就是小编为大家带来的 js 学习阶段总结 (必看篇) 的全部内容了,希望大家多多支持脚步之家。