您的位置:首页 > Web前端 > JavaScript

对象和数组

2016-10-31 00:00 106 查看
对象,其实就是一种引用类型。而对象的值就是引用类型的实例。

Object类型

创建Object类型有两种,一种是new运算,一种是字面量表达式。 对象里面可以存放任何类型。

1.使用new运算符创建Object

var box=new Object();  //new 方式
box.name="何";   //创建属性字段
box.age=28;

//new 关键字可以省略
var box=Object();  //省略new关键字

2.使用字面量方式创建Object

var box={
name:"何",
age: 26
};

3.属性字段也可以使用字符串形式

var box={
"name": "何",
"age": 28
}
//也可以用字符串形式

4.使用字面量及传统复制方式

var box={};
box.name="何";
box.age=26;

5.两种属性输出方式

alert(box.age);
alert(box["age"]);

6.给对象创建方法

var box={
run:function(){

return"运行"
}
}
alert(box.run());

7.使用delete删除对象属性

delete box.name;

在实际开发过程中,一般我们更加喜欢字面量的声明方式。因为它清晰,语法代码少,而且还给人一种封装的感觉。字面量也是向函数传递大量可选参数的首选方式。

function box(obj){       //参数是一个对象
if(obj.name!=undefined)  //判断属性是否存在
alert(obj.name);
if(obj.age!=undefined)
alert(obj.age);
}

box({name:"何",age:26})  //调用函数传递一个对象


Array类型

创建Array(数组)类型有两种方式:第一种是new运算符,第二种是字面量。

1.使用new关键字创建数组

var  box=new Array();  //创建了一个数组
var box=new Array(10); //创建一个包含10个元素的数组
var box=new Array("何",26,"前端"); //创建了一个数组并分配好了元素

2.以上三种方法都可以省略new关键字。

bar box=Array();

3.使用字面量方式创建数组

var box=["何",26,“前端”];
alert(box[2])   //使用索引下表来读取数组的值
alert(box.length) //使用length属性获取数组元素量  获取元素个数

创建一个稍微复杂的数组

var box=[
{            //第一个元素是一个对象
name:"何",
age:26,
run:function(){
return "运行"
},
},
["马云","飞流",new Object()],   //第二个元素是一个数组
"江苏",                        //第三个元素是一个字符串
2+2,                          //第四个元素是数值
new Array(1,2,4)              //第五个元素是数组
];
alert(box);


Array对象方法

注意区别

slice(), 数组长度不会改变

splice(), 与 slice() 不同的是,splice()的数组长度 会改变

substr(), 字符串长度不会改变

substring(), 字符串 长度不会改变 与 slice()substr() 方法不同的是,substring() 不接受负的参数。

slice()方法可从已有的数组返回选定的元素,不会修改数组的值和长度,只是返回一个子数组。如果想删除数组中的一段元素,可用Array.splice()。这也是slice()和splice()方法的区别

语法:

arrayObject.slice(start,end)

参数:

start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。

end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

var arr=["一","二","三","四","五"];
document.write(arr.slice(-5,-1))
document.write("<br>")
document.write(arr)
//一,二,三,四
//一,二,三,四,五

splice 只改变数组的长度 其他的和slice()一样

var arr=["一","二","三","四","五"];
document.write(arr.splice(1,5))
document.write("<br>")
document.write(arr)

//二,三,四,五
//一

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。会改变原始数组。

arrayObject.splice(index,howmany,item1,.....,itemX)

index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。

howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。

item1, ..., itemX 可选。向数组添加的新项目。

var arr=["a","b","c","d"];
document.write(arr.splice(1,2));
document.write("<br>");
document.write(arr);

//b,c
//a,d

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。substr() 的参数指定的是子串的开始位置和长度,因此它可以替代 substring() 和 slice() 来使用, 但是智能在字符串中使用。

var str="hello";
document.write(str.substr(1));
document.write("<br>");
document.write(str);

//ello
//hello

substring() 方法用于提取字符串中介于两个指定下标之间的字符。 start不能为负数。

var str="Hello world!"
document.write(str.substring(3))
document.write("<br>")
document.write(str)

//lo world!
//Hello world!

contact() 连接两个或更多的数组,并返回结果。

var arr1=[111,222,333,444,555];
var arr2=[111,222,333,444,555];
document.write(arr1.concat(arr2))
//111,222,333,444,555,111,222,333,444,555

join() 方法用于把数组中的所有元素放入一个字符串。

var arr1=["一","二","三","四","五"];
var arr2=["一"];
document.write(arr1.join(arr2))

//一一二一三一四一五

var arr1=["一","二","三","四","五"];
document.write(arr1.join("."))

//一.二.三.四.五

pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。

var arr=["一","二","三","四","五"];
document.write(arr.pop())
document.write("<br>")
document.write(arr)

//五
//一,二,三,四

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

var arr=["一","二","三","四","五"];
document.write(arr.push("六"))
document.write("<br>")
document.write(arr)

//6
//一,二,三,四,五,六

reverse() 方法用于颠倒数组中元素的顺序。

var arr=["一","二","三","四","五"];
document.write(arr.reverse())

//五,四,三,二,一

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。 和pop相反 pop是删除最后一个元素。

var arr=["一","二","三","四","五"];
document.write(arr.shift())
document.write("<br>")
document.write(arr)

//一
//二,三,四,五

sort() 方法用于对数组的元素进行排序.

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。

若 a 大于 b,则返回一个大于 0 的值。

var arr=["d","c","b","a"];
document.write(arr.sort())
//a,b,c,d

数值从小到大排序,如果直接sort(),不会按照数值大小排序,会按照字母排序,所以需要使用一个排序函数。

function sortNumber(a,b)
{
return a-b
}
var arr=["100","55","1000","1"];
document.write(arr.sort(sortNumber))

//1,55,100,1000


toSource() 方法表示对象的源代码。toSource() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中,不兼容,只有火狐可以。

function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}

var bill=new employee("Bill Gates","Engineer",1985);

document.write(bill.toSource());

//({name:"Bill Gates", job:"Engineer", born:1985})

toString() 方法可把数组转换为字符串,并返回结果。

var arr=["1","2","3","4"];
document.write(arr.toString());
document.write("<br>");
document.write(arr);

//1,2,3,4
//1,2,3,4

toLocalString()把数组转换为本地字符串。首先调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。

var arr=["你","我","他"];
document.write(arr.toLocaleString());
document.write("<br>");
document.write(arr);

//你,我,他
//你,我,他

//我没有看到什么区别?

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。同shift()相反

var arr=["你","我","他"];
document.write(arr.unshift("我们","你们"));
document.write("<br>");
document.write(arr);

//5
//我们,你们,你,我,他

valueOf() 方法返回 Array 对象的原始值。valueOf() 方法返回 Array 对象的原始值。

遍历数组

//两种
var arr=["你","我","他"];
//第一种
for(var i=0;i<arr.length;i++){
document.write(arr[i])
}
//第二种
for(var i in arr){
document.write(arr[i])
}

//你我他


面向对象

面向对象 ,就是把方法(函数)转成对象 对象里面有属性 和值 (普通值 还有方法)

//本来 test()是个函数
function test(){
this.age=100;
this.fn=function(){
return 'fn11';
}
}
//通过new 把他转化为对象(object)
var t1=new test();

//结果是[object Object]

还可以在方法外部增加属性

function test(){
this.age=100;
this.fn=function(){
return 'fn11';
}
}
test.prototype.t2="我们"
var t1=new test();
document.write(t1.t2)

//结果是  我们


内置对象

Math, String,Array, Date

eg:var d=new Date();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js对象 数组