(一) 对象
- 创建一个空的对象
var obj = new Object();
//或
var obj = {};
- 在创建时直接定义该对象
var obj = {
name: "Song",
"six": "boy",
details: {
color: "red",
size: 10
}
}
- 对象的属性可以通过链式(chain)表示方法进行访问
obj.details.color; // red
obj["details"]["size"]; // 10
- 创建一个对象原型(与类相似)
function Person(name, age) {
this.name = name;
this.age = age;
}
// 根据原型实例一个新的对象
var my = new Person("Song", 19);
- prototype修改或添加对象原型的实例共享对象
function Person(A, B) {
this.A= A;
this.B= B;
}
Person.prototype.funAaddB= function() {
return this.A+ ' ' + this.B; //this指向当前函数对象
}
Person.prototype.Name='Song';
var obj = Person('hello','word');
obj.funAaddB();//hello word
obj.Name;//'Song'
通过prototype修改或添加对象可以在所有实例中共用,JavaScript允许你在任何时候修改原型中的一些东西,也就是说你可以在允许时给已经存在的对象添加额外的方法
同时你也可以对JavaScript的内置函数原型添加东西
下面为String添加了一个倒序的方法
var s = "Song";
String.prototype.reversed = function() {
var r = "";
for (var i = this.length - 1; i >= 0; i--) {
r += this[i];
}
return r;
}
s.reversed(); // gnoS
"hello,word".reversed(); // drow,olleh
(一) 数组
- 创建数组
var a = new Array();
//或
var a = [];
//或在创建时直接定义
var a = ["A", "B", "C"];
- 数组长度
var a = ["A", "B", "C"];
a[100] = "F";
a.length; // 101
注意:数组长度并不总是等于数组中元素的个数,数组长度等于数组最大索引值+1
当你视图访问一个的数组索引会得到undefined
var a = ["A", "B", "C"];
a[100] = "F";
a[99]; //undefined
- 遍历数组
for (var i = 0; i < a.length; i++) {
//a[i]
}
for (const currentValue of a) {
// currentValue
}
for (var i in a) {
// a[i]
}
["A", "B", "C"].forEach(function(currentValue, index, array) {
// currentValue or array[index]
});
- 向数组添加元素
var a = ["A", "B", "C"];
a[100] = "F";
a.push('G');