码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript创建对象的几种方式

时间:2016-05-03 20:10:54      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

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();

 

JavaScript创建对象的几种方式

标签:

原文地址:http://www.cnblogs.com/ck168/p/5456144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!