文档章节

Javascript 引用类型Object,Array

专业填坑
 专业填坑
发布于 2017/04/28 17:38
字数 674
阅读 10
收藏 0
点赞 0
评论 0

Object

var person = new Object();
person.name = 'zhangsan';

Object居然是叫做构造函数,还有一种可以创建Object实例(对象字面量表示法),不会调用Object构造函数

var person = {
    name : 'zhangsan'
}
如何使用属性值
  1. person.name
  2. person["name"]
    以上两种方式都可以,person.name更直观,person["name"]可以用变量访问属性person[variable],或者出现关键字·特殊字符等等,例如 , person["hello world"]

Array

两种创建方式:

var colors = Array();
var colors = []; // 不会调用Array构造函数

需要注意第二种方式,不要这么干var colors = ["red","green",],这样会变成3个长度,有些游览器是2个长度,一定要把最后的逗号去掉

数组长度问题

colors.length可以获取数组长度

var colors = [];
colors[99] = 0;
alert(colors.length); // 此时数组的长度变为100,其它0到98位置的值都是undefined
使用isArray()检测数组,为什么要这样好像是有原因的,但是我不懂,先做个标记吧,以后再看看
一些数组函数的使用:
var colors = ["red", "blue", "green"];
console.log(colors.toString()); // 逗号隔开的字符串
console.log(colors.join(">")); // 以>隔开的字符串,默认是以逗号隔开

var len = colors.push("pike", "black"); // 向数组末尾添加多个元素,返回修改后数组的长度
console.log(colors);
console.log("The length of colors is " + len);

var element = colors.pop(); // 数组末尾移除一个元素,返回被移除的元素
console.log("The last element is " + element2 + " has been removed");

console.log(colors);
var element2 = colors.shift(); // 移除首页元素,返回被移除的元素
console.log("The first element is " + element2 + " has been removed");

var len2 = colors.unshift("organce", "white"); // 向数组头部插入多个元素,返回修改后数组的长度
console.log(colors);
console.log("The length of colors is " + len2);

colors.reverse(); // 反转数组
console.log(colors);
数组排序问题

调用 colors.sort() 可以用来排序,但是sort比较的是字符串,即使是数组元素是数字,也会调用toString()转换为字符串在比较.

var num = [1,5,10,15,20];
num.sort();
console.log(num); // [1, 10, 15, 20, 5] 真的很尴尬

解决方法如下:

function compare(value1, value2)
{
	return value1 - value2;
}
var num = [1,5,10,15,20];
num.sort(compare); // 传递个参数
console.log(num);
复制副本

引用类型复制操作其实是复制指针,如果想要获得一个副本,可以用 concat 方法,如下

var num = [1,5,10,15,20];
var num2 = num.concat();
num[0] = 1237;
console.log(num); // [1237, 5, 10, 15, 20]
console.log(num2); // [1, 5, 10, 15, 20]

concat()方法可以基于当前数 组中的所有项创建一个新数组。具体来说,这个方法会先创建当前数组一个副本,然后将接收到的参数 添加到这个副本的末尾,最后返回新构建的数组。 e.g. var num2 = num.concat( 25, 30, [35, 40] );

© 著作权归作者所有

共有 人打赏支持
专业填坑
粉丝 4
博文 66
码字总数 9463
作品 0
广州
程序员
JavaScript 数据类型判断

1.1 JavaScript 数据类型 简单数据类型(基本数据类型): Undefined ; Null ; Boolean ; Number ; String ; Symbol(ES6新增) 复杂数据类型:Object,Object 本质上是由一组无序的名值对组成...

piada ⋅ 05/18 ⋅ 0

由Object.prototype.toString.call( )引发关于toString( )方法的思考

引言 前端面试中有这么一道经典的问题,如何判断一个对象是否为数组? ES5提供了一个确定对象是否为数组的函数 其中,object是必须的,表示要测试的对象 但是,当我们考虑到浏览器兼容性问题...

wangpf ⋅ 05/11 ⋅ 0

JavaWeb01-HTML篇笔记(七)

.1 案例三:完成对注册页面的数据的简单校验.1.1.1 需求: 对注册页面的数据进行非空的简单校验!!!如果有某个值没有输入,点击提交,弹出一个对话框进行提示!! 1.1.2 分析:1.1.2.1 技术分...

我是小谷粒 ⋅ 04/28 ⋅ 0

由js数组类型判断触发的浪漫思绪

一、前言 众所周知,js是门“动态”、“弱类型”编程语言,这意味着在js中可以很任性的定义变量,任性的同时也意味着需常在开发中对变量做类型判断,曾几何时,对数组变量的类型的判断是件很...

hanmin ⋅ 06/08 ⋅ 0

低门槛彻底理解JavaScript中的深拷贝和浅拷贝

在说深拷贝与浅拷贝前,我们先看两个简单的案例: 按照常规思维,应该和一样,不会因为另外一个值的改变而改变,而这里的 却随着的改变而改变了。同样是变量,为什么表现不一样呢?这就要引入...

lunaqi ⋅ 05/11 ⋅ 0

WEB前端面试的10个最基础JavaScript问题!

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行...

web前端小辰 ⋅ 05/27 ⋅ 0

JavaScript 参考手册

JavaScript 参考手册 http://www.w3school.com.cn/jsref/index.asp 本部分提供完整的 JavaScript 参考手册: JavaScript 本地对象和内置对象 Browser 对象(BOM) HTML DOM 对象 JavaScript...

chenhao_asd ⋅ 05/25 ⋅ 0

JS 底蕴之 变量、作用域和垃圾回收

基本类型和引用类型 在 JavaScript 中,数据类型可分为基本类型和引用类型, 基本类型有六种:Null,Undefined,String,Boolean,Number,Symbol; 而引用类型就是传说中的 Object 了。 其中...

Fly_001 ⋅ 05/23 ⋅ 0

JavaScript核心概念归纳整理

原文出处: 熊俊漉 JavaScript语言本身是一个庞大而复杂的知识体系,复杂程度不低于任何一门后端语言,本文针对JavaScript语言的核心概念进行简单的梳理,对应的每个知识点仅仅点到为止,不作...

音乐宇Code ⋅ 05/27 ⋅ 0

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 06/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】

x64: TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 2/1/02 ;.MODEL flat,stdcall x64 not su......

simpower ⋅ 昨天 ⋅ 0

一起读书《深入浅出nodejs》-node模块机制

node 模块机制 前言 说到node,就不免得提到JavaScript。JavaScript自诞生以来,经历了工具类库、组件库、前端框架、前端应用的变迁。通过无数开发人员的努力,JavaScript不断被类聚和抽象,...

小草先森 ⋅ 昨天 ⋅ 0

Java桌球小游戏

其实算不上一个游戏,就是两张图片,不停的重画,改变ball图片的位置。一个左右直线碰撞的,一个有角度碰撞的。 左右直线碰撞 package com.bjsxt.test;import javax.swing.*;import j...

森林之下 ⋅ 昨天 ⋅ 0

你真的明白RPC 吗?一起来探究 RPC 的实质

你真的明白RPC 吗?一起来探究 RPC 的实质 不论你是科班出身还是半路转行,这么优秀的你一定上过小学语文,那么对扩句和缩句你一定不陌生。缩句就是去除各种修饰提炼出一句话的核心,而不失基...

AI9o後 ⋅ 昨天 ⋅ 0

z-index设置失效?

今天碰到了一个问题,就是在给li设置提示框的时候,有用到遮罩效果,本来想把对应的出现在最顶层,可是不管将li设置的z-index值设为多大,li都没有出现在遮罩层之上。 我在网上查了z-index设...

IrisHunag ⋅ 昨天 ⋅ 0

CyclicBarrier、CountDownLatch以及Semaphore使用及其原理分析

CyclicBarrier、CountDownLatch以及Semaphore是Java并发包中几个常用的并发组件,这几个组件特点是功能相识很容易混淆。首先我们分别介绍这几个组件的功能然后再通过实例分析和源码分析其中设...

申文波 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部