标签:
JavaScript创建对象的几种方式:
1、使用Object构造函数来创建一个对象。
//1、使用Object构造函数创建一个对象,下面代码创建了一个person对象,并用两种方式打印了Name的属性值。 function createObject() { var person = new Object(); person.name = "kevin"; person.age = 31; alert(person.name); alert(person["name"]); }
2、使用对象字面量创建一个对象。
//2、使用对象字面量创建一个对象;不要奇怪person["5"],这里是合法的;另外使用这种加括号的方式字段之间是可以有空格的如person["my age"]。 function createObject2() { var person = { name: "kevin", age: 31, 5: "Test", "my sex": true }; alert(person.name); alert(person["5"]); alert(person["my sex"]); }
3、使用原型模式创建对象。
//3、使用原型模式创建对象。从下面的代码执行结果可以看到,两个实例的friends的值是一样的,这可能不是我们所期望的。 function Person() { } Person.prototype = { constructor: Person, name: "kevin", age: 31, job: "SE", friends: ["Jams", "Martin"], sayFriends: function () { alert(this.friends); } }; var person1 = new Person(); person1.friends.push("Joe"); person1.sayFriends();//Jams,Martin,Joe var person2 = new Person(); person2.sayFriends();//James,Martin,Joe
4、使用工厂模式创建对象,返回带有属性和方法的person对象
function createPerson(name, age,job) { var o = new Object(); o.name=name; o.age=31; o.sayName=function() { alert(this.name); }; return o; } createPerson("kevin",31,"se").sayName();
推荐使用创建对象的方法
1、组合使用原型模式和构造函数创建对象。(这是使用最广泛、认同度最高的创建对象的方法)
function Student(name, age) { this.name = name; this.age = age; this.friends = ["tom", "lily"]; } Student.prototype.sayFriends = function () { alert(this.friends); }; var stu1 = new Student("ck", 28); var stu2 = new Student("sh", 27); stu1.friends.push("lucy"); stu1.sayFriends(); //tom,lily,lucy stu2.sayFriends(); //tom,lily
2、动态原型模式。(这个模式的好处在于看起来更像传统的面向对象编程,具有更好的封装性)
function Student(name, age) { //属性 this.name = name; this.age = age; this.friends = ["Jams", "Martin"]; //方法 if (typeof this.sayName != "function") { Student.prototype.sayName = function () { alert(this.name); }; Student.prototype.sayFriends = function () { alert(this.friends); }; } } var stu = new Student("ck", 23); stu.sayName();
标签:
原文地址:http://www.cnblogs.com/ck168/p/5456144.html