`
liaofeng_xiao
  • 浏览: 127297 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习笔记:Javascript对象和数组

阅读更多
对象:
    是一种复合数据类型,他们将多个数据值集中在一个单元中,而且允许使用名字来存取这些值。
创建对象:使用对象直接量----用逗号分隔开的一对对的属性名和值的列表,包含在一个花括号中,见例子:
var empty={};
var point={x:0,y:0};
var circle={x:point.x,y:point.y,radius:2};
var homer={"name":"Homer simpson","age":"34","married":true};
var book={};
book.title="javascript";
book.chapter1=new Object();
book.chapter1.title="introduction";
book.chapter1.pages=11;
book.chapter2={title:"Lexical strcture",pages:6};

对象属性:
可以通过for(var prop in obj)迭代对象的所有属性;
通过obj.prop或obj[prop]来访问对象的属性。注意:[]中的表达式必须为一个字符串,无论属性在声明的时候是否用字符串来声明该属性,如var o={"x":1}和var o={x:1},访问时都使用o.x或o['x],而不能用o[x]和o.'x'。属性访问的两种方式:一种带字符串,另一种不带字符串,牢记!我们还会发现使用[]访问对象的属性比用.更加灵活,尤其是在访问我们都不知道名字的属性上。
检测属性的存在性:
if("x" in o)o.x=1;//只要o有x属性就复制

或者:
if(x.o!=undefined)x.o=1;//o的x属性必须不是null和undefined才赋值

区别在于当x.o=undefined或null时,前一条语句将o.x设置为1,后一条却什么也不做。所以,记得区分属性的存在性、null和undefined。如果还要在null和undefined中进行区分,可以使用!==运算符。

通用的Object属性和方法:
constructor属性:在JS中,每个object对象都有一个constructor属性,它引用了初始化这个对象的构造函数:
var d=new Date();
alert(d.constructor==Date);//true

我们可以通过constructor属性来确定一个位置类型是否是我们需要的:
if((typeof d=="object") && d.constructor==Date)//
if((typeof d=="object") && d instanceof Date))
//都是先确定大类型:object,再判断具体类型

toString()方法和toLocaleString()方法:定义类时最好定义自己的toString方法。
hasOwnProperty(propName):用来判断对象是否有自己定义的非继承属性
isPrototypeOf():如果isPrototypeOf()方法所属的对象是参数的原型对象,那么该方法就返回true,否则返回false:
var o={};
Object.prototype.isPrototype(o);//true
Function.prototype.isPrototype(Object);//true


数组:
var empty=[];
var misc=[1.1,true,"a"];
var b=[[1,{x:1,y:2}],[2,{x:3,y:4}]];
var count=[1,,3]//共三个元素:1,undefined,3
var undefs=[,,];//注意:共两个元素,都为undefined
var a=new Array(10);
var c=new Array(5,4,3,"testing");

注意:数组的下标必须是从0到2~32-1的整数,如果不是这个范围内的整合则转换为对应的字符串,并作为数组对象的一个属性存在,例子:
var a=[];
a[-1.23]=true;
alert(a.length);//0
alert(a["-1.23"]);//true

增加数组元素:
Javascript只给真正存储了元素的数组元素分配内存空间,而且这些元素的下标还可以不是连续的:
var a = new Array(1000);
a[0]=1;
a[999]=999;

再看一个例子:
Circle c = new Circle(1,2,3);
c[0]="this is an array element of an object!";

其实c不是数组对象,我们只不过是给对象c增加了一个属性,名为0;
删除数组元素:
delete将数组的元素设置为undefined,但是元素还存在。要真正的删除一个元素,可以使用Array.shift()、Array.pop()和Array.splice()。
截断或者增长数组:length属性不但是可读的,还是可写的。我们可以根据这一属性达到截断或增长数组的目的。
数组的方法:
[list]
  • join([separator]):将所有元素转换为字符串(调用元素的toString()方法),然后再把他们连接起来。可以指定分隔符。
  • reverse():将原数组的元素颠倒
  • sort([function(){}]):将原数组排序,默认是按字母顺序对元素进行排序,也可以通过传递的方法指定排序比较方式。该函数参数的返回值应该为0、大于0的值或小于0的值。
  • concat(args):连接数组,如果参数中的数组为数组,则展开。但是只展开一层,不能递归展开【奇怪,我怎么试验都是可以递归展开】。另注意原数组不变,返回连接后的新数组。
  • var a=[1,2];
    alert(a.concat(3,[4,5]));//1,2,3,4,5
    alert(a.concat(4,[5,[6,7,[8,9]]]));//1,2,4,5,6,7,8,9
    
  • slice(start[,end]):返回数组的某一连续部分,包含start,不包含end元素。如果只有start,则返回从start到数组结尾处的所有元素。如果两个参数中有一个是负数,则它所指定的是相对于数组中的最后一个元素而言的元素。slice函数跟concat一样不改变原数组,而只是返回新的数组。
  • var a=[1,2,3,4,5];
    a.slice(0,3)//1,2,3
    a.slice(3);//4,5
    a.slice(1,-1);//2,3,4
    a.slice(-3,-2);//3
    
  • splice():插入和删除数组元素通用的方法,它可以执行插入、删除或者同时执行插入和删除操作。位于被插入了或删除了的元素之后的数组元素会进行必要的移动,以便能够和数组余下的元素保持连续性。splice函数的第一个参数指定了要插入或删除的元素在数组中的位置,第二个参数制订了要从数组中删除的元素个数。如果第二个参数被省略了,那么将删除从开始元素到数组结尾处的所有元素。splice返回的是删除了元素之后的数组,如果没有删除任何元素,将返回一个空数组。splice的前两个参数指定了应该删除的数组元素,这两个参数之后还可以有任意多哥额外的参数,它们指定的是要哦才能够第一个参数指定的位置处开始插入的元素。注意:splice不展开数组参数,同时直接在原数组上进行操作。另外就是要注意元素的插入位置。见例子:
  • var a =[1,2,3,4,5,6,7,8];
    a.splice(4);//[1,2,3,4],returns [5,6,7,8]
    a.splice(1,2);//[1,4],returns [2,3]
    a.splice(1,1);//[1],returns[4]
    var b = [1,2,3,4,5];
    b.splice(2,0,'a','b');//b is [1,2,'a','b',3,4,5],returns []
    b.splice(2,2,[1,2],3);//b is [1,2,[1,2],3,3,4,5],returns ['a','b']
    
  • push()和pop()方法:push添加元素到数组末尾,pop删除数组的最后一个元素。两者都是直接在原数组上进行操作。
  • unshift()和shift():unshift添加元素到数组头部,shift删除数组的第一个元素。
  • [/list]
    哦...解放咯!玩去咯...
    分享到:
    评论

    相关推荐

      JavaScript基础学习笔记

      * 对象和数组:对象的创建、对象的属性和方法、数组的创建、数组的方法等 * 构造函数:构造函数的定义、构造函数的调用等 JavaScript 高级 * 闭包:闭包的定义、闭包的使用等 * 高级函数:高阶函数的定义、函数...

      狂神说系列 JavaScript笔记

      - 变量与数据类型:JavaScript支持动态类型,包括基本类型(如数字、字符串、布尔值)和引用类型(如对象和数组)。了解如何声明变量(var、let、const)和类型转换至关重要。 - 运算符:包括算术运算符、比较...

      JavaScript学习笔记,markdown格式以及PDF格式

      5. **对象和数组**:对象是键值对的集合,可以通过字面量方式或构造函数创建。数组是一系列元素的集合,可以使用索引访问。 6. **作用域和闭包**:理解全局和局部作用域的区别,以及闭包如何保留对外部作用域的引用...

      JavaScript_StudyNote:JavaScript学习笔记

      在JavaScript_StudyNote的学习笔记中,我们可以深入理解并掌握JavaScript的基础知识和高级特性。 1. **基础语法** - 变量声明:JavaScript支持var、let和const关键字声明变量,其中let和const是ES6新增的。 - ...

      JavaScript学习笔记 概括了所有的javaScript语法 用法

      本学习笔记全面涵盖了JavaScript的语法和用法,旨在帮助初学者快速掌握并深入理解这门语言。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符和流程控制。变量在JavaScript中使用`let`、`const`和`var`...

      JavaScript练习程序学习笔记.rar

      在JavaScript的学习过程中,首先会接触到基础语法,包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(算术、比较、逻辑、三元运算符)以及流程控制语句...

      javascript入门学习笔

      2. **对象和数组**:JavaScript中的对象是一种键值对的集合,而数组则是一系列元素的有序列表。理解和运用这两者能帮助开发者创建复杂的数据结构。 3. **DOM操作**:文档对象模型(Document Object Model)是...

      《JavaScript高级编程》学习笔记之object和array引用类型

      JavaScript是一种基于原型的脚本语言,它具备灵活而强大的对象和数组引用类型。对象和数组是引用类型,这意味着它们存储的是引用的值而不是实际的数据值。在JavaScript中,对象和数组是用于存储和操作数据的关键构建...

      javascript学习文档.zip

      2. **对象和数组**:JavaScript中的对象是一组键值对,可以用来表示复杂的数据结构。数组则用于存储一组有序的元素,可以通过索引来访问。理解这两者对于处理数据至关重要。 3. **DOM操作**:Document Object Model...

      韩顺平《轻松搞定网页设计HTML+CSS+JAVASCRIPT》之Javascript学习笔记

      引用数据类型主要包括对象和数组,它们是存储在堆内存中的,通过引用(地址)访问。 JavaScript还支持面向对象编程,这是通过构造函数、原型链和实例化来实现的。通过构造函数创建对象,原型链允许对象间共享属性和...

      ES6 学习笔记.pdf

      9. 对象和数组 ES6对对象字面量进行了扩展,包括方法的简洁表示、属性的计算名等。同时,ES6提供了新的数组方法,如`find()`、`fill()`等。 10. 异步处理 除了`Promise`和`async/await`,ES6中也对事件循环进行了...

      JavaScript学习笔记

      数据类型主要有基础类型(如字符串、数字、布尔值)和引用类型(如对象和数组)。操作符用于比较、算术运算以及逻辑判断。流程控制则涉及到条件语句(if...else)和循环(for、while),用于决定代码执行的顺序。...

      JavaScript_Demo,文章《JavaScript笔记》配套代码

      数据类型包括基本类型(如字符串、数字、布尔值、null和undefined)和引用类型(如对象和数组)。在处理数据时,我们常会用到算术、比较和逻辑操作符,以及用于对象和数组操作的赋值、解构赋值等。 在“JS练习代码...

      javascript学习笔记

      数据类型有基本类型(如字符串、数字、布尔值、null、undefined)和引用类型(如对象和数组)。操作符包括算术、比较、逻辑等,语句则有控制流程语句(如if、for、while)和声明语句(如function)。 二、...

      javascript-note:JavaScript部分内容介绍

      4. **对象和数组**:JavaScript中的对象是键值对的集合,可以使用字面量语法或构造函数创建。数组则用于存储一组有序的元素,可以使用索引来访问。ES6引入了类数组对象和解构赋值,使得对象和数组的操作更加灵活。 ...

      JS学习笔记.pdf

      以上内容来自文档《JS学习笔记.pdf》,涵盖了JavaScript语言中几个重要的概念和方法,其中包括类型转换、字符串处理、函数使用和数组处理等方面的知识。学习这些知识点对于深入理解和掌握JavaScript编程至关重要。...

      JavaScript学习笔记之JS对象

      在本篇学习笔记中,我们将重点关注两种基本的对象类型:日期对象(Date)和数组对象(Array)。 首先,让我们来看看日期对象Date。在JavaScript中,Date对象用于处理日期和时间。创建一个Date对象的基本格式是`new ...

      Javascript笔记

      1. **基础语法**:JavaScript的基础包括变量(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、运算符(算术、比较、逻辑、赋值等)、流程控制(条件语句if...else、switch,...

      javascript笔记

      - **数据类型**:包括基本类型(如字符串、数字、布尔值、null、undefined)和引用类型(如对象和数组)。 - **作用域**:变量在函数内或函数外定义,影响其可见性,`var`有全局和函数作用域,`let`和`const`有...

      学习型JavaScript:JavaScript的全面介绍

      深入学习JavaScript,首先要理解其基本语法,包括变量、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、控制流程(条件语句、循环、函数)以及作用域。其中,函数作为一等公民的特性使得...

    Global site tag (gtag.js) - Google Analytics