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>