zoukankan      html  css  js  c++  java
  • js 创建对象

    1.工厂模式

            function createPerson(name, age, job) {
                var o = new Object();
                o.name = name;
                o.age = age;
                o.job = job;
                o.sayName = function () {
                    alert(this.name);
                };
                return o;
            }
            var person1 = createPerson("Nicholas", 29, "Software Engineer");
            var person2 = createPerson("Greg", 62, "Doctor");

    2.构造函数模式

            function Person(name, age, job) {
                this.name = name;
                this.age = age;
                this.job = job;
                this.sayName = function () {
                    alert(this.name);
                };
            }
            var person1 = new Person("Nicholas", 29, "Software Engineer");
            var person2 = new Person("Greg", 62, "Doctor");
            //与工厂模式的不同点
            //1.没有显示创造对象
            //2.直接将属性和方法赋值给this
            //3.没有return语句
            //4.使用new创造对象
    
            //使用方式
            //1.当做构造函数使用
            var person = new Person("Nicholas", 29, "Software");
            person.sayName();//Nicholas
    
            //2.作为普通函数调用
            Person("Yellow", 27, "Doctor");
            window.sayName();//Doctor
    
            //3. 在另一个对象的作用域中调用
            var o = new Object();
            Person.call(o, "King", 25, "Nurse");
            o.sayName();//King
            
            //缺点:每个方法都要在每个实例上重新创建一遍

    3.原型模式

            function Person() {
            }
            Person.prototype.name = "Yellowshorts";
            Person.prototype.age = 29;
            Person.prototype.job = "Software";
            Person.prototype.sayName = function () {
                alert(this.name);
            }
            var person1 = new Person();
            person1.sayName();//Yellowshorts
    
            var person2 = new Person();
            person2.sayName();//Yellowshorts
    
            alert(person1.sayName == person2.sayName);//true
  • 相关阅读:
    css字体属性相关。
    子级用css float浮动 而父级div没高度不能自适应高度
    转载:基于Redis实现分布式锁
    LeetCode(53):最大子序和
    LeetCode(52):N皇后 II
    LeetCode(51):N皇后
    LeetCode(50):Pow(x, n)
    LeetCode(49): 字母异位词分组
    LeetCode(48):旋转图像
    LeetCode(47):全排列 II
  • 原文地址:https://www.cnblogs.com/Yellowshorts/p/4103982.html
Copyright © 2011-2022 走看看