`
yiminghe
  • 浏览: 1460277 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Javscript Array 探讨

阅读更多

虽然 Javscript Array 是对象,typeof [] == 'object',但作为系统内置的对象类型并不同于我们自己建造的对象。

 

如下代码:

 

Array.prototype.custom=function(){
	alert('custom');
};
var f=[1];
f.custom();

for(var i in f) {
    alert(i +' - '+f[i]);
}

f['0']=2;
alert(f[0]);

f['a']=1;

//只打印用户设置属性
for(var i in f) {
    alert(i +' - '+f[i]);
}

alert(f.length);


那么看一下 我们自己模拟的 Array :

 

function EmulateArray() {
   this.length=0;
}

EmulateArray.prototype.substring=function(){alert(1);};

var x=new EmulateArray();

//把属性和方法都打出来了
for(var i in x) {
    alert(i +'-'+x[i]);
}

 

 

那么总结一下,系统原生对象(特别Array) 和我们平常自己构造的对象的差异吧:

 


1.数组实际上是下标为属性,对应下标值为该属性值的对象,且属性能转成数字会自动转成下标数字 。(注意:平常对象属性值数字和数字字符串也不区分的,相当于数字作为属性时会转化成数字字符串)

2.for in 循环数组属性时,并不会列出数组的方法以及length属性,只会列出数组的所有用户设置属性(包括在Array类中的属性,方法),包括数字和非数字属性 ,方法

3.length 实际上等于数组对象最大的数字属性值+1

4.当访问 f[x] 时,实际上就是访问 f对象的x属性,


5.同理,对于new String(),new Date(),new Number .... 对于 for in 更不会有任何输出

 

 

ps:关于Array  类型的判断:

 

1.直接判断构造函数

 

x && x.constructor === Array


缺点:在判断来自不同window,frame的数组对象时失效

 

2.鸭子判断 (duck judge)


x && typeof x.length === 'number' && typeof x.splice === 'function' &&

!x.propertyIsEnumerable('length')


缺点:不能100%判断

 

3.简洁的平台相关判断


x && Object.prototype.toString.call(x) === '[object Array]'


缺点:无标准规定

 


PS: 关于 object 属性方法的枚举


javascript 中 object 的 toString() ,toLocalString(),valueOf(),hasOwnProperty(),isPrototypeOf(),

propertyIsEnumerable() 都是不能枚举的内置方法。在 for in 语句中不能遍历到这些方法属性。


 

 

 

 

 

分享到:
评论

相关推荐

    JavaScript实现Array(数组)和Map

    在JavaScript中,Array和Map是两种非常重要的数据结构,它们各有各的特点和应用场景。这篇文章将深入探讨这两个概念,以及如何在实际开发中使用它们。 首先,Array是JavaScript中最基础的数据结构之一,它允许我们...

    浅谈JavaScript Array对象

    在本篇文章中,我们主要探讨了JavaScript中的Array对象,包括其定义、属性、以及常用的实例方法。 首先,我们需要了解JavaScript中数组的基本概念。JavaScript数组是一种值的有序集合,其中的值被称为元素。每个...

    JavaScript array常用方法代码实例详解

    在这篇文章中,我们将深入探讨几个常见的数组方法:`map()`、`reduce()`、`filter()`、`sort()`以及一些其他的方法如`every()`、`some()`、`find()`、`findIndex()`和`forEach()`。 1. **map()** `map()`方法对...

    JavaScript 中的 `Array.prototype.filter` 方法全解析

    本文将深入探讨 Array.prototype.filter 方法的工作原理、使用场景、代码示例以及与其他数组方法的比较。 Array.prototype.filter 是 JavaScript 中处理数组的强大工具,它允许开发者以声明式的方式轻松筛选出符合...

    javascript object array方法使用详解.docx

    本文将详细介绍Array原型上的方法,并探讨如何将这些方法应用于普通的JavaScript对象(Object),以此扩展对象的功能,使其具备类似于数组的行为特性。 #### 二、Array 原型方法概述 ##### 2.1 `push` `Array....

    JavaScript数组对象Array案例.pdf

    本文将深入探讨JavaScript数组对象Array的一些关键知识点,并通过提供的案例进行解析。 首先,数组的创建有多种方式。最常见的是使用`new Array()`构造函数,如`var arr = new Array(1, 2, 3, 4, 5, 6)`,这会创建...

    JavaScript Array扩展实现代码

    在本文中,我们将探讨几个常见的JavaScript Array扩展,包括`indexOf`、`lastIndexOf`、`forEach`、`every`和`some`,并提供兼容旧版浏览器的实现代码。 1. `indexOf`方法: `indexOf`方法用于查找数组中指定元素的...

    JavaScript中的Array的创建方式和Array与Map的应用

    本篇将深入探讨JavaScript中的Array的创建方式以及Array与Map这两种数据结构的应用。 一、Array的创建方式 1. **字面量方式**:这是最常见的方式,通过方括号`[]`直接创建数组,并在其中添加元素。例如: ```...

    Javascript数组Array操作整理[定义].pdf

    本文主要探讨JavaScript数组的两个关键属性:`length`和`prototype`。 首先,`length`属性是每个JavaScript数组特有的,它表示数组中元素的数量。不同于其他一些编程语言,JavaScript的数组长度是可以动态调整的。...

    js代码-JavaScript Array 对象定义和添加元素

    本篇文章将详细探讨JavaScript Array对象的定义以及如何添加元素。 一、Array对象的定义 1. 基本定义 创建一个数组最简单的方法是通过字面量语法,即用方括号`[]`包裹元素,元素之间用逗号分隔: ```javascript ...

    JavaScript 实现基础 ArrayList 功能

    下面将详细介绍如何使用JavaScript来实现基础的ArrayList功能,并探讨在没有参数重载(overload)的情况下如何处理方法的多样性。 首先,我们需要创建一个ArrayList类,这个类将包含添加、删除、查找、更新和遍历...

    JavaScript Array对象详解

    在这个详解中,我们将深入探讨Array对象的各个方面,包括其定义、属性、实例方法以及静态方法,并通过实例来演示这些功能。 1. **介绍** - **说明**:数组是由多个值组成的有序集合,每个值称为元素,每个元素都有...

    浅析JavaScript Array和string的转换(推荐)

    在这篇文章中,我们将会深入探讨JavaScript数组和字符串之间的转换方法及其相关知识点。 首先,我们来了解JavaScript数组(Array)。数组是一种特殊的对象类型,用于存储一系列的值。创建一个新数组有多种方法。最...

    javascript初学教程 多本 pdf

    6. **第6章 String、Math、Array等数据对象**:JavaScript提供了内置的字符串、数学和数组对象,这一章会讲解这些对象的常用方法,如字符串的拼接、搜索、替换,数组的遍历、插入、删除,以及数学计算相关的函数。...

    JavaScript Array对象基本方法详解

    JavaScript中的Array对象是编程中非常基础且重要的部分,它提供了丰富的内置方法来处理数组中的数据。下面我们将详细探讨数组对象的一些基本方法。 1. **创建数组** - 使用`new Array()`构造函数创建数组,例如: ...

    javascript Array对象基础知识小结

    本文将围绕“javascript Array对象基础知识小结”进行深入探讨,包括数组的声明、属性以及常用方法。 首先,我们来看数组的声明方式,即所谓的“5法”。在JavaScript中,一维数组的声明主要有以下五种形式: 1. `...

    javascript Array.prototype.slice的使用示例

    `Array.prototype.slice`是JavaScript中的一个非常重要的方法,主要用于从原始数组中提取子数组并返回。这个方法不会改变原数组,而是返回一个新的数组实例。在本文中,我们将深入探讨`slice`方法的使用,以及如何在...

    Javascript 权威指南 第6版 JavaScript The Definitive Guide 6th Edition

    接着,书中的章节详细介绍了JavaScript的内置对象和函数,如Array、Date、Math等,以及DOM操作和事件处理。这些内容对于网页交互和动态效果的实现至关重要。此外,书中还涵盖了JSON(JavaScript Object Notation),...

    JavaScript基础知识例子

    首先,让我们深入探讨JavaScript的数据类型。在JavaScript中,数据类型分为基本类型和引用类型。基本类型包括字符串(String)、数字(Number)、布尔值(Boolean)、空值(Null)、未定义(Undefined)和Symbol...

Global site tag (gtag.js) - Google Analytics