`

javascript object

 
阅读更多
1、从array 到 object
数组都会有一个索引,从0 开始,以1为单位递增。这个在前面已经知道了,如:
>>> var myarr = ['red', 'blue', 'yello', 'purple']
>>> myarr[0]
'red'
.....

可以把它看成一张表,只有两列,多行的表,第一列看作key,第二列就是value,可以把它看成一个key/value的结果只不过这个key是正整数。
一个object 也近视于一个数组,不同之处就在于key你可以自己定义,不会在限制与正整数,让我们来看一个简单的object:
var hero = {breed:'Turtle',occupation:'Ninja'};

可以看出有以下几点:
object 变量的name :hero
定义一个数组你用的是[]对象你用的是{}
用逗号去分割他们的属性,
用冒号来作为key/value的结果
属性的名字可以在引号里下面的都是正确的
var o = {prop:1}
var o = {"prop":1}
var o = {'prop':1}
建议属性不使用引号,可以减少拼写,有些特殊的地方你的使用引号:
****
*如属性的名字是javascript的保留字
×或者是他包含一些特殊字符。

var o = {
something: 1,
'yes or no': 'yes',
'!@#$%^&*': true
};
Object 是所有javascript object 的父对象。意味着你创建的每一个对象都继承它。可以通过两种方式创建一个新的空对象,如:var o = {}; 或者
var o = new Object();
一个空对象并不是全然无效的因为一它已经包含了一些方法和属性
o.constructor return 一个constructor方法
o.toString() return 一个对object 陈述的string
o.valueOf() return 一个单值化的value,经常是他自己。

我们来看一下object 的行为,
>>>o.toString()
"[object Object]"
toString() 将是在他们内部被唤起,object 会被转换成一个string 使用。如: alert(o);和 alert(o.toString());是同样的效果。
如果我们试图输出一个object 和string 进行连接,则会调用toString()
valueOf() 是object 的提供的另一个方法,是一个简单object的onstrutor 所以return 的将是自己的对象
>>> o.valueOf() === o
true

概述:
. 可以创建一个对象 var o = {}; var  o = new Object();
.不管怎么符合,都是从Object继承过来的。因此也有相应的的属性方法和构造
/****
*Array
***/
Array()内建了一个function ,你可以使用constructor 来创建一个Array
>>>var a = new Array();

>>> var a = [];
是一样的。
不管你怎么创建一个Array,你都可以给它添加元素,如:
>>>a[0] = 1; a[1] = 2; a;
[1, 2]
当你使用Array()的constructor,如果你传递value 给它,那么他将会将这些value 分配给这个array's elements
>>>var a = new Array(1, 2, 3, 'four');

当你传递一个数字给Array时,它将认为,这个数字是这个数组的长度如:
var a2 = new Array(5);
a2[0] = 1;
a2
[1, undefined, undefined, undefined, undefined]
因为数组中是带着一个constructor所以说数组也算是一个object 通过typeof a2 会得到一个“object”因为数组是object 所以数组也就继承了object 的属性和
方法,
a2.toString()
[1, undefined, undefined, undefined, undefined]
>>>a.constructor
Array()

Arrays 是 object 但是他是一个特殊类型,因为:
*它属性的名称是自动以0开始命名的
*有一个length 属性,包含数组内元素的个数
*有一个add的添加方法继承自Object
检查一下object 和 array 的不同:

>>>var a = [], o = {};
一个数组object 一般会自动创建一个length属性,可以通过点来调用。
>>>a.length
0
>>>typeof o.length
给他们添加一个非数字和数字的属性都是成功的。
>>>a[0] = 1; o[0] =1;
>>>a.prop = 2; o.prop = 2;
a的属性length 总是最新的,他总是忽略掉非数字的属性。
>>>a.length
1
这个length也是可以被设置的,那么比这个length 小的元素的都是空的,将被设置为undefined
>>>a.length
5
>>>a
[1, undefined,undefined, undefined, undefined]
设置比length 到小的数字,将会移除掉多余的element;
>>>a.length = 2
2
>>>a
[1,length]
/**
×数组也是有一些有趣的方法
**/
数组的添加是继承自object, 数组也有其他有趣的方法,如:sort(), join(), slice()....

var a = [3,5,7,'test'];
push 往数组的最后添加一个元素
>>>a.push('new');
>>>a
[3,5,7,'test','new']
pop()去掉数组的最后一个元素。
>>>a.pop();
>>>a
[3,5,6,'test']

sort()对数组进行排序,然后会return 一个数组。
join()返回一个字符串,包含数组的所有元素,连接着传入的string
a.join('is not')
"3 is not 5 is not 6 is not test"

slice()从原数组中截取一个片段返回。[)区间截取
>>>a.slice(1,3)
[5,7]

/***
*function
**/
我们知道function 是一个特殊的数据类型,它也是一个Object所以它内部有一个构造 Function(),可以通过构造去定义函数,但是不推荐.
>>> function sum(a, b ){ return a+b;}
>>> var sum = function (a, b) {return a + b;};
>>> var sum = new Function(a,b,'return a + b');

>>> var first = new Function('a, b, c, d', 'return arguments;');
>>> first(1,2,3,4);

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics