js创建对象的多种方式
1.字面式声明对象
<script>
//字面式
var person = {
name:'张三',
age:16,
run:function () {
return '走路';
}
}
alert('他叫' + person.name + ',今年' + person.age + '岁了,上学方式是' + person.run())
</script>
2.Object构造对象
因为js中所有对象都是Object的子对象,所以可以new Object操作后构造函数
<script>
var person = new Object();
person.name = '李四'
person.age = 15;
person.run = function () {
return '骑车'
}
alert('他叫' + person.name + ',今年' + person.age + '岁了,上学方式是' + person.run())
</script>
3.构造方式声明对象
this代表当前对象,函数内部只能用this访问属性和方法
<script>
function Person(name,age) {
this.name = name;
this.age = age;
this.run = function () {
alert('他叫' + person.name + ',今年' + person.age + '岁了,上学方式是坐汽车');
}
}
var person = new Person('王五',17);
person.run();
</script>
4.构造函数创建对象
构造器构造的对象,效率低,并且参数顺序在函数体不能变
<script>
var obj = new Function('num1','num2','return num1 + num2');
var result = obj(2,8);
alert(result);
</script>
5.工厂方式声明对象
<script>
function createObject(name,age) {
var person = new Object();
person.name = name;
person.age = age;
person.run = function (tool) {
alert('他叫' + this.name + ',今年' + this.age + '岁了,上学方式是' + tool);
}
return person;
}
var person = createObject('王五',16);
person.run('坐船')
</script>
6.原型模式声明对象
任何js方式或函数,都自带一个prototype属性,而且是以对象的方式存在。可让所有实例化的对象都拥有它包含的属性和方法
<script>
function Person() {
}
Person.prototype.name = '马六';
Person.prototype.age = 17;
Person.prototype.run = function (tool) {
alert('他叫' + this.name + ',今年' + this.age + '岁了,上学方式是' + tool);
};
var person = new Person();
person.run('坐飞机');
</script>
7.混合模式声明对象
<script>
function Person(name,age) {
this.name = name;
this.age = age;
}
Person.prototype = {
run:function (tool) {
alert('他叫' + this.name + ',今年' + this.age + '岁了,上学方式是' + tool);
}
}
var person = new Person('马七',18);
person.run("坐火车");
</script>

浙公网安备 33010602011771号