一、通过”字面量“方式创建
方法:将成员信息写到{}中,并赋值给一个变量,此时这个变量就是一个对象。
例如:
var person = (name:'dongjc', work:function() {console.log('write coding')});
如果{}中为空,则将创建一个空对象:
var person = {} //创建空对象
代码:
<script type="text/javascript"> var person = { name: "dongjc", age: 32, Introduce: function () { alert("My name is " + this.name + ".I'm " + this.age); } }; person.Introduce(); </script>我们还可以给对象丰富成员信息。
● 对象.成员名称 = 值;
● 对象[成员名称] = 值;
也可以获取对象的成员信息。
● 对象.成员名称;
● 对象[成员名称];
<script type="text/javascript"> var person = { name: "dongjc", age: 32, Introduce: function () { alert("My name is " + this.name + ".I'm " + this.age); } }; person.worker = 'coding'; //丰富成员信息 </script>
二、通过”构造函数“方式创建
方法:
var obj = new 函数名();
这与通过类创建对象有本质的区别。通过该方法创建对象时,会自动执行该函数。这点类似于php通过创建对像时,会自动调用构造函数,因此该方法称为通过"构造函数“方式创建对象。
<script type="text/javascript"> function Person() { this.name = "dongjc"; //通过this关键字设置默认成员 var worker = 'coding'; //没有this关键字,对象创建后,该变量为非成员 this.age = 32; this.Introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; alert("My name is " + this.name + ".I'm " + this.age); }; var person = new Person(); person.Introduce(); </script>
此代码一共会两次跳出对话框,原因在于创建对象是自动执行了该函数。
注意:this关键字的使用。这里的this与php中话法意思类似,指调用该函数的对象,这里指的是person。
三、通过object方式创建
方法:先通过object构造器new一个对象,再往里丰富成员信息。
var obj = new Object();
代码:
<script type="text/javascript"> var person = new Object(); person.name = "dongjc"; person.age = 32; person.Introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; person.Introduce(); </script>
四、使用工厂模式创建对象
这种方式是使用一个函数来创建对象,减少重复代码,解决了前面三种方式的代码冗余的问题,但是方法不能共享的问题还是存在。
<script> 'use strict'; // 使用工厂模式创建对象 // 定义一个工厂方法 function createObject(name) { var o = new Object(); o.name = name; o.sayName = function() { alert(this.name); }; return o; } var o1 = createObject('zhang'); var o2 = createObject('li'); //缺点:调用的还是不同的方法 //优点:解决了前面的代码重复的问题 alert(o1.sayName === o2.sayName); //false </script>
五、通过原型模式创建对象
每个方法中都有一个原型(prototype),每个原型都有一个构造器(constructor),构造器又指向这个方法。
举个例子:
function Animal(){} alert(Animal.prototype.constructor==Animal);//true
原型创建对象:
<script> 'use strict'; /* * 原型模式创建对象 */ function Animal() {} Animal.prototype.name = 'animal'; Animal.prototype.sayName = function() { alert(this.name); }; var a1 = new Animal(); var a2 = new Animal(); a1.sayName(); alert(a1.sayName === a2.sayName); //true alert(Animal.prototype.constructor); //function Animal(){} alert(Animal.prototype.constructor == Animal); //true </script>
通过原型创建对象,把属性和方法绑定到prototype上,通过这种方式创建对象,方法是共享的,每个对象调用的是同一个方法。
以上就是javascript创建对象的几种方式的详细内容,更多请关注易知道|edz.cc其它相关文章!