• 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();
  • 相关阅读:
    固定textview大小,根据文字多少调整字体自适应textview大小
    这可能是最全的禁用win10自动更新了
    Android Studio 3.0正式版填坑之路
    android studio 3.0之后版本自定义文件名生成apk文件
    Android Studio从2.3升级到3.1注意事项
    Android studio2.3.3升级3.1.2坑
    iterm2 快捷键大全
    php实现的短网址算法分享
    mysql远程连接命令
    Mac下安装与配置Go语言开发环境
  • 原文地址:https://www.cnblogs.com/ck168/p/5456144.html
Copyright © 2020-2023  润新知