对象
对象的创建
第一种方法,通过new Object()
方法创建对象
//第一种方式创建对象
var obj = new Object();
obj.name = ... ; //添加属性
... ...
obj.f = function () {...}; //添加方法
第二种方法,通过自定义构造函数来创建对象
function Person(name,age){
this.name = name;
this.age = age;
}
var per = new Person("菊花",21);
第三种方法,通过字面量的方式创建对象
var obj = {};
obj.name = "菊花"; //添加属性
//添加方法
obj.eat = function () { //添加方法
console.log("eat");
}
对象调用属性和方法
假设有如下对象
var obj = {
name: "小明",
age: 18,
eat: function () {
console.log("eat");
}
};
对象调用属性和方法有两种方法,第一种是通过点语法,比如
console.log(obj.name); //调用name属性
obj.eat(); //调用eat方法
小明
eat
第二种是采用字典的方式,如下
console.log(obj["name"]); //调用name属性
obj["eat"](); //调用eat方法
小明
eat
JSON格式的对象
json
格式的对象是键值对都是字符串,如下
var json = {
"name": "小明", //"name"就是键,"小明"就是值
"age": "18"
}
遍历json
格式对象的方法是使用for-in
循环,如下
//key会一一取遍json中的键
for (var key in json) {
console.log(json[key]);
}
小明
18
函数参数的传递问题
在函数中对传入的参数进行操作,是否会影响传入的参数。我们不妨看两个例子:
var num = 10;
function f(num) {
num = 100;
}
f(num);
console.log(num); //10,没有改变
var obj = {
num: 10
}
function f(obj) {
obj.num = 100;
}
f(obj);
console.log(obj.num); //100,发生了改变
我们得出结论,如果传入的是数字,字符串等简单类型,是不会受到影响的,如果传入的是对象,那么在函数中如果对对象的属性或方法进行了改变,那么会影响这对象。