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>