- 对象是键值对的集合,对象是由属性和方法构成的(也有说法为:对象里面皆属性,认为方法也是一个属性)
创建对象
1) 第一种方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</style>
</style>
</head>
<body>
<script type="text/javascript">
var student = {
name: "小白",
grade: "初二",
say: function(){
console.log("你好");
}
};
</script>
</body>
</html>
2)第二种方式:构造函数方式
- 任何函数都可以当成构造函数,把一个函数通过 new 的方式来进行调用时,称之为构造函数的调用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</style>
</style>
</head>
<body>
<script type="text/javascript">
function Student(name, grade, say) {
this.name = name;
this.grade = grade;
this.say = say;
}
var student = new Student('小白', '初二', function(){
console.log('你好');
});
</script>
</body>
</html>
更多构造函数创建对象的例子:
var xiaoMing = new Object();
var xiaoMing = {};
var rooms = new Array(1, 3, 5);
var rooms = [1, 3, 5];
var reg = new RegExp('123');
var reg = '/123/';
- 构造函数的执行过程:
1)创建一个对象(我们把这个对象称之为该构造函数的实例,如 p1)。
2)创建一个内部对象:this,将 this 指向该实例(p1)
3)执行函数内部代码,其中,操作 this 的部分就是操作了该实例(p1)
4)创建对象后的返回值:
如果函数没有返回值(没有 return 语句),那么就会返回该实例(p1)
function Fn(){
}
// fn 是构造函数 Fn 的实例
var fn = new Fn();
如果函数返回了一个基本数据类型(数字、字符串、布尔值、null、undefined)的值,那么本次函数的返回值是该实例(p1)
function Fn(){
return 1;
}
// fn 是构造函数 Fn 的实例
var fn = new Fn();
如果函数返回了一个复杂数据类型的值,那么本次函数的返回值就是该值
function Fn(){
return [1, 2, 3];
}
// fn 不是构造函数 Fn 的实例
var fn = new Fn();
- 一个函数通过 new 调用,或者不通过 new 调用,很多时候会有截然不同的返回值
内置函数 Stirng():
// a 为字符串
var a = String(100);
// b 为对象
var b = new String(100);
- 判读一个对象是不是某个构造函数的实例
function Person(){
}
var p1 = new Person();
// true,p1 是构造函数 Person 的实例
console.log((p1 instanceof Person);
function Person(){
return 100;
}
var p1 = new Person();
// true,p1 是构造函数 Person 的实例
console.log((p1 instanceof Person);
function Person(){
return [1, 3, 5];
}
var p1 = new Person();
// false,p1 不是构造函数 Person 的实例
console.log((p1 instanceof Person);
// true,p1 不是构造函数 Array 的实例
console.log((p1 instanceof Array);
获取对象属性
1)第一种方式:.语法
// 获取到 name 属性的值,为:小白
var name = student.name;
// 获取到一个函数
var say = student.say;
.语法虽然使用起来更方便,但是有局限性:
. 后面不能使用 js 中的关键字、保留字
. 后面不能使用数字
2)第二种方式:[]语法
// 获取到 name 属性的值,为:小白
var name = student["name"];
// 获取到一个函数
var say = student["say"];
设置对象属性
1)第一种方式:.语法
// 设置 name 属性的值为小白
student.name = "小白";
// 设置 say 属性的值为一个函数
student.say = function(){
console.log("你好");
}
2)第二种方式:[]语法
// 设置 name 属性的值为小白
student["name"] = "小白";
// 设置 say 属性的值为一个函数
student.["say"] = function(){
console.log("你好");
}
删除对象属性
关键字 delete 只能删除对象中的属性,不能删除变量!!!
1)第一种方式:.语法
// 删除 name 属性
delete student.name;
2)第二种方式:[]语法
// 删除 name 属性
delete student["name"];
网友评论