1.字面式创建对象
(主要适用于一个实例对象的场合,缺乏封装性和重用)
<script type="text/javascript">
var person = { //对象
name:"周杰伦",//属性
age:40,
job:"singer",
song:"一路向北",
sing :function(){ //方法
alert(this.song);
}
};
person.sing(); //调用person中的sing方法
</script>
2.new 操作符 + Object 创建对象
<script type="text/javascript">
var person = new Object(); //new一个对象
person.name="周杰伦"; //给对象的各个属性赋值
person.age=40;
person.job="singer";
person.song=["七里香","花海","一路向北"]; //数组
person.sing = function(){ //sing方法
alert(person.name);
for(var i=0;i<person.song.length;i++){
alert(person.song[i]); //输出数组中的三个元素
}
}
person.sing();//调用sing方法
</script>
3.工厂模式创建对象
(没有解决对象识别的问题,本例中,得到的都是obj对象,对象的类型都是Object)
<script type="text/javascript">
function creatPerson(name,age){ //在函数名中加入形参
var obj = new Object(); //new Object对象
obj.name=name; //为对象obj赋值
obj.age=age;
obj.sayName=function(){ //obj的方法
alert(this.name);
};
return obj; //返回对象
}
var person1 = creatPerson("周杰伦",40);
person1.sayName();
</script>
4.组合使用构造函数创建对象 (构造函数以大写字母开头)
构造函数可以创建多个不同属性值的对象,原型模式可以用于定义方法和共享的属性,我们可以将这两种模式结合起来,这种模式现在是使用最广泛的一种模式。
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。
构造函数模式用于定义实例属性,而原型模式定义方法和共享的属性。这种混合模式还支持向构造函数传递参数。
<script type="text/javascript">
function Person() { //构造函数
Person.prototype.name = "Nick"; //原生属性
Person.prototype.age = 29;
Person.prototype.job = ["singer", "dancer"];
Person.prototype.sayName = function () {
alert(this.name);
}
}
var person1 = new Person(); //对象1
person1.job.push("actor"); //对象可以使用原生属性
document.write(person1.job);
document.write("<br/>");
var person2 = new Person();//对象2
person2.name = "Lily";
document.write(person2.name);
</script>
网友评论