对象的本质和意义:(object)
对象是一个整体,用于描述一个事物的所有的相关信息;
内容之间用“,”分隔,最后一个不加逗号;
对象中一般有属性(静态)和方法(动态,方法是作为属性来存储的函数。):
你可以想象成对象就是一个人,这个人的身高,体型,性格是他本身的属性,是静态的;而这个人喜欢打篮球,喜欢吃东西,这就是他的动作也就是方法,是动态的;
使用{ }去定义一个对象,数据由键值对的组合方式;值可以是任意数据类型;
var obj = {
sex : "不详",
socre : 100,
flag : true,
sing : function{
console.log("爱唱歌")
},
play : function{
console.log("打游戏")
}
}
对象的操作:
访问值:(查)
console.log(obj.sex);
console.log(obj["socre"]);
console.log(obj.sing());
添加一个属性:(增)
obj.hobby = "睡觉";
obj["weight"] = “50kg”;
obj.dance = function(){
}
修改:(改)
obj.sex = “女”;
obj[“socre”] = 99;
删除:(删)
delete obj.flag;
delete obj["sex"];
访问属性的时候,可以用obj.属性或者obj["属性"];需要执行方法(了解这个人)的时候,需要用“.”的方式去调用。
在W3C的官网文档中提到:
如果通过关键词 "new" 来声明 JavaScript 变量,则该变量会被创建为对象
var x = new String(); // 把 x 声明为 String 对象
var y = new Number(); // 把 y 声明为 Number 对象
var z = new Boolean(); // 把 z 声明为 Boolean 对象
请避免将字符串、数值或逻辑声明为对象。他们会增加代码的复杂性并降低执行速度。
扩展:
JavaScript有3大对象,分别是本地对象
、内置对象
和宿主对象;
这里引用别人的话:本地对象也经常被叫做原生对象或内部对象,包含Global和Math在内的内置对象在《JavaScript高级程序设计》里也被叫做单体内置对象,很多时候,干脆也会直接把本地对象和内置对象统称为“内置对象”,也就是说除了宿主对象,剩下的都是ECMAScript的内部的“内置”对象。
这里说说内置对象:
JS内置对象也被称为内部类。所谓的内部类,就是JavaScript里面封装好了的类(也就是我们不需要去自己写,可以拿过来用)。
JavaScript中的内部类大致有:Array,Boolean,Date,Math,Number,String,RegExp.....
可以分为两类:静态类和动态类
静态类:不需要new,直接调用这个类的属性或方法即可,例如:Math Math.pow()
动态类:需要new,然后再调用对象的方法或者属性 var arr = new Array(4,5,6); arr.push()
数组:就是一组数据的集合
js中数组的特点:(有下标,从0开始;有长度,length)
①数组定义时无需指定数据类型;
②数组定义时可以无需指定数组长度;
③数组可以存储任何数据类型的数据;
④一般是相同的数据类型。
数组的创建方式:
①字面量定义:var arr = [值1,值2,值3];(数组文本方法)
②构造函数创建:new Array(值1,值2,值3); //当括号中没有值的时候,打印结果为[ ](空数组);
创建数组并指定长度(只有一个值的时候为起初的长度,可自己增加值来改变这个长度):new Array(size);
W3C中提出,出于简洁、可读性和执行速度的考虑,请使用第一种方法(数组文本方法)
var ary = new Array(4);
ary[0] = 12;
ary[1] = 13;
ary[2] = 14; //加入值 数组名[下标] = 值
长度为4,只加入了三个值,则第四个值为undefined;
数组操作:
数组名.方法
1)push(5,4,3)--向数组末尾添加新的数组项,返回值新数组的长度,原数组改变
2)pop()--删除数组最后一项,没有参数,返回值删除项,原数组改变
3)unshift()--向数组开头位置添加,返回值是新数组的长度,原数组改变
4)shift()--删除数组第一项,没有参数,返回值删除项,原数组改变
(以下是扩展方法) :
5)splice()--原数组改变
splice(n,m)--从索引(下标)n开始,删除m个,返回值以数组的形式返回删除项
splice(n)--从索引n开始删除到最后
splice(0)--原数组清空,返回一个和原来一样的新数组
splice(n,m,z);从索引(下标)n开始,删除m个,把z添加到删除的位置
6)slice(n,m)--从索引n开始,查找到索引m处,不包含m,将查找到的以新数组返回,原数组不变
7)concat--数组的拼接,不改变数组,返回最终连接好的新数组;
8)数组转为字符串:不改变原数组
toString() join('符号') (数组.join()可以直接转数组)
清空数组的方式:
①arr.splice(0);
②arr.length = 0;
③arr = [ ];
数组的遍历:
for , for...in
数组可以使用for循环遍历
也可以使用for...in遍历 一般使用for...in
for-in的特点:
没有循环条件
自动取出下标,
下标默认从 0 开始 ,最大下标 数组长度-1
下标的类型为string
当需要返回两个值时,可以用对象{ }或数组[ ]的形式返回;
只能用for...in遍历对象,for不能遍历对象;(因为对象的键是一个变量)在遍历时[ ]中不能加引号;
一些数组类型:
整数数组 : [12,3,4,5,6]
字符串数组 : ["orange","apple","pear"]
对象数组 : [{sname:"jack",age:19},{sname:"lily",age:18}]
二维数组 : [[1,3,4],[5,6,7],[1,2,5]] (一个数组的每一项都是一个数组)
数组和对象的区别
在 JavaScript 中,数组使用数字索引。
在 JavaScript 中,对象使用命名索引。
数组是特殊类型的对象,具有数字索引。
在数组中使用数字(下标)来访问其“元素”。
在对象使用名称(属性名称和方法名称)来访问其“成员”。