数组对象的3个属性
1、length 属性
Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面是演示改变length属性的例子:
var arr=[12,23,5,3,25,98,76,54,56,76]; //定义了一个包含10个数字的数组
alert(arr.length); //显示数组的长度10
arr.length=12; //增大数组的长度
alert(arr.length); //显示数组的长度已经变为12
alert(arr[8]); //显示第9个元素的值,为56
arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃
alert(arr[8]); //显示第9个元素已经变为"undefined"
arr.length=10; //将数组长度恢复为10
alert(arr[8]); //虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"
由上面的代码我们可以清楚的看到length属性的性质。但length对象不仅可以显式的设置,它也有可能被隐式修改。
JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设置为所使用元素索引的值加1。例如下面的代码:
var arr=[12,23,5,3,25,98,76,54,56,76];
alert(arr.length);
arr[15]=34;
alert(arr.length);
代码中同样是先定义了一个包含10个数字的数组,通过alert语句可以看出其长度为10。随后使用了索引为15的元素,将其赋值为15,即arr[15]=34,这时再用alert语句输出数组的长度,得到的是16。使用new Array()形式创建的数组,其初始长度就是为0,正是对其中未定义元素的操作,才使数组的长度发生变化。
由上面的介绍可以看到,length属性是如此的神奇,利用它可以方便的增加或者减少数组的容量。因此对length属性的深入了解,有助于在开发过程中灵活运用。
2、prototype 属性
返回对象类型原型的引用。prototype 属性是 object 共有的。
objectName.prototype
objectName 参数是object对象的名称。
说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
对于数组对象,以以下例子说明prototype 属性的用途。
给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。
function array_max( )
{
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if (max < this[i])
max = this[i];
}
return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );
该代码执行后,y 保存数组 x 中的最大值,或说 6。
3、constructor 属性
表示创建对象的函数。
object.constructor //object是对象或函数的名称。
说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。
例如:
x = new String("Hi");
if (x.constructor == String) // 进行处理(条件为真)。
或
function MyFunc {
函数体
}
y = new MyFunc;
if (y.constructor == MyFunc) // 进行处理(条件为真)。
对于数组来说:
y = new Array();
相关推荐
在JavaScript编程中,获取对象和数组的属性键值(key)和对应值(value)是一项基本操作。本文将详细介绍如何实现这一功能,并提供相应的代码示例。 首先,我们需要理解JavaScript中的对象和数组。对象是一种键值对...
js数组数据和对象数据做比较,并改变数组的值
嵌套的复杂数组对象,删除深层嵌套后返回新数组。 如:var data = [ { id: '1', name: 'www' }, { id: '2', name: 'qqq' }, { id: '3', name: 'eee', children: [ { id: '4', name: ...
在进行web项目开发的时候,有时候需要把一些前端的数组进行去重处理,得到一个去重后的数据,然后在进行相关的操作
总的来说,理解和熟练运用JavaScript中的数组和对象是每个前端开发者的基本功。通过深入研究源码,我们可以更好地理解JavaScript引擎的工作机制,而借助工具库,则可以简化代码并提高开发效率。在实际开发中,不断...
在给定的示例中,我们看到一个包含多个对象的数组`tmp`,每个对象有`id`和`magicId`两个属性。下面将详细讨论如何实现这种去重操作。 1. **对象去重的基本思路** 在JavaScript中,由于对象是引用类型,直接比较两...
### JavaScript 解析 PHP 数组对象 #### 一、概述 在 Web 开发中,JavaScript 和 PHP 是两种非常重要的编程语言。PHP 主要用于服务器端的数据处理与逻辑控制,而 JavaScript 则负责客户端的交互和数据展示。在实际...
在JavaScript中,数组对象和JSON(JavaScript Object Notation)是两种非常重要的数据结构,它们在处理和存储数据方面起着核心作用。这篇学习笔记将深入探讨这两种数据结构的特性和用法。 首先,我们来了解...
这个问题可以通过一个名为`sortArr`的函数来解决,它接收两个参数:一个数组(`arr`)和一个字符串(`str`),然后返回一个新的数组,其中的元素是原数组中具有相同属性值的对象的集合。 首先,让我们详细解析`...
按所推荐的程序在IE下跑了下,的确,排序耗时很小。 代码如下: [removed] /* * 洗牌 */ function ... /* * 快速排序,按某个属性,或按“获取排序依据的函数”,来排序. * @method soryBy * @static * @
首先,了解JavaScript数组的`sort()`方法。`sort()`方法允许我们对数组元素进行原地排序,它接受一个可选的`compareFunction`参数,用于自定义排序规则。如果没有提供`compareFunction`,数组元素默认按照字符串的...
在这个场景中,“js代码-改造数组对象内部对象属性结构”可能涉及到了以下几个关键知识点: 1. **数组遍历**:在JavaScript中,我们可以使用`for`循环、`forEach()`、`map()`、`reduce()`等方法遍历数组。例如,`...
在JavaScript中,类数组对象并不是真正的数组,但是它们看起来和数组很相似,因为它们也有索引和length属性。类数组对象包括但不限于Arguments对象(函数调用时传入的参数集合)、HTMLCollection(如document....
本文实例分析了JavaScript类数组对象转换为数组对象的方法。分享给大家供大家参考,具体如下: 1、类数组对象: 拥有length属性,可以通过下标访问; 不具有数组所具有的方法。 2、为什么要将类数组对象转换为数组...
假设我们有两个JSON对象,`obj1`和`obj2`,它们各自包含一个数组属性,如`arr1`和`arr2`: ```json { "obj1": { "arr1": ["元素1", "元素2", "元素3", "元素4"] }, "obj2": { "arr2": ["元素2", "元素4", ...
在JavaScript(JS)中,处理数据格式转换是常见的任务,特别是在前端开发中。当你需要将数组对象格式的数据转换成JSON(JavaScript Object Notation)时,这是因为JSON作为一种轻量级的数据交换格式,广泛用于Web...
在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...
本问题探讨了如何根据`TYPE`和`REMARK`两个属性的值来决定是否合并对象,并生成新的数组对象。首先,我们需要理解源数据的结构,然后通过编程逻辑实现目标数据的转换。 源数据是一个包含多个对象的数组,每个对象有...
在这个例子中,我们有一个名为`arr`的数组,其元素是包含`name`属性的对象。以下是如何使用`for`循环遍历这个数组,并将所有`name`属性的值连接成一个字符串的代码: ```javascript function getTextByJs() { var ...
2. **链式访问**:允许开发者通过一个字符串或数组表示的路径来访问多层深的对象属性,如`get(obj, 'deep.nested.property')`。 3. **处理数组**:可能包括根据索引获取数组元素的功能,同时处理越界情况。 4. **...