zoukankan      html  css  js  c++  java
  • JavaScript创建对象的几种方式

    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();
  • 相关阅读:
    线性回归学习历程
    CART决策树的学习历程
    markdown测试
    开张大吉+代码测试
    使用tomcat启动dubbo项目
    ThreadLocal 工作原理、部分源码分析
    Dubbo项目demo搭建
    redis 操作 list 的测试
    redis 操作 hash 的测试
    redis 操作string 的测试
  • 原文地址:https://www.cnblogs.com/ck168/p/5456144.html
Copyright © 2011-2022 走看看