JavaScript 核心基础与高级特性详解

作者:拾光

时间:2026-10-30

浏览:113

本文系统梳理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 学习阶段总结 (必看篇) 的全部内容了,希望大家多多支持脚步之家。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章