1、利用JSON创建对象
var o = {
name : "zhangshan",
age : 20,
length :155,
work : function(){
alert(this.name);
}
alert(age);
o.work();
};
//动态性:运行时可变化,比如对象可以动态的添加成员
var i = {};
i.name = "Lucy";
i.work = function(){
alert(this.name);
}
i.work();
2、构造型函数(constructor)
function Person(name,age){
this.myname = name; //this指向的是new Person创建出来的对象
this.age = age;
}
var p = new Person("Rose",20);
p.length = 180; 利用JavaScript动态性来追加成员
alert(p.myname);
alert(p.age);
alert(p.length);
扩展
new的理解
/* function XXX(name){
* this.name = name;
* }
* var instanceof = new XXX("cj");
* 1. var temp = {};
* 2. this === temp;
* 3. 开始执行函数内部的代码
* 4. temp.name = name;
*/
对象自命量和构造型函数的区别
1、函数可以创建多个对象
2、函数里面可以写代码
案例
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript">
/*
* 创建一个学生类,里面有名字、年龄、性别三个属性
* 创建一个班级类,有一个名字属性,有一个add方法,用来往班级里添加一个学生
* 有一个getStudentsByGender(通过性别查询学生)
* 有一个方法getStudentsByAge(比如传的参数是18,则找出大于等于18岁的学生)
*/
//学生类
function Stu(sname,sage,ssex){
this.sname =sname;
this.sage = sage;
this.ssex = ssex;
}
//班级类
function Cls(cname){
this.cname = cname;
//定义一个数组,用来封装添加的学生
this.stus = [];
}
//添加学生的方法
Cls.prototype.addStu = function(stu){
//将学生添加到班级
this.stus.push(stu);
}
//通过性别查询学生的方法
Cls.prototype.getStuBySex = function(sex){
//判断是否有学生
if(this.stus != null && this.stus.length > 0){
//定义一个数组,用来保存学生
var stuArray = [];
//遍历
for (var i = 0; i < this.stus.length; i++) {
//判断性别
if(this.stus[i].ssex == sex){
//将符合条件的学生添加到数组中
stuArray.push(this.stus[i]);
}
}
return stuArray;
}
}
Cls.prototype.getStuByAge = function(age){
if(this.stus != null && this.stus.length > 0){
var stuArray = [];
for (var i = 0; i <this.stus.length; i++) {
if(this.stus[i].sage == age){
stuArray.push(this.stus[i]);
}
}
return stuArray;
}
}
var cls = new Cls("前端");
var stu1 = new Stu("张三",20,"男");
var stu2 = new Stu("Rose",18,"女");
cls.addStu(stu1);
cls.addStu(stu2);
var stuArray;
stuArray = cls.getStuBySex("男");
console.log(stuArray);
stuArray = cls.getStuByAge(18);
console.log(stuArray);
</script>
</body>
</html>