zoukankan      html  css  js  c++  java
  • 对象(一)

    1、工厂模式
    function createPerson(name,age,sex) {
            var obj = new Object();
            obj.name = name;
            obj.age = age;
            obj.sex = sex;
            obj.sayName = function () {
                alert(this.name)
            }
            return obj;
        }
    
        var p1 = createPerson("张三",20,"")
        var p2 = createPerson("李四",22,"")

    2、构造函数模式

    函数的第一个字母大写,表示该函数为构造函数,可以通过 new 方法进行实例化对象
    function Person(name,age,sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayName = function () {
                alert(this.name);
            }
        }
        // 实例化对象时,每个对象都将创建一个 sayName 的方法,因此每个对象的 sayName 方法都不相同
        var p3 = new Person("王五",23,"");
        var p4 = new Person("赵六",24,"")
        alert(p3.sayName == p4.sayName)         // false

    由于实例化对象时,每个对象都将创建一个 sayName 的方法,因此每个对象的 sayName 方法都不相同,所以效率相对较低,改进方法一 :

    function Person2(name,age,sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.sayName = sayName;
        }
        function sayName() {
            alert(this.name);
        }
    
        var p5 = new Person2("周周",32,"");
        var p6 = new Person2("屋五",22,"");
        alert(p5.sayName == p6.sayName);        // true

    此时,创建的所有对象将共用一个 sayName 方法,但是该方法还有个缺点,就是创建了一个全局的 sayName 函数,效率也是比较低下

    改进方法二,使用 原型的方法:

    function Person3(name,sex) {
            this.name = name;
            this.sex = sex;
        }
        var obj = Person3.prototype;
        obj.age = 26;
        obj.sayName = function () {
            alert(this.name);
        }
        var p7 = new Person3("真真","")
        var p8 = new Person3("望望","")
        alert(p7.age)                       // 26
        alert(p7.sayName == p8.sayName)     // true
        alert(obj.isPrototypeOf(p7)) 

    注意 :   构造函数.prototype = 原型对象

        原型对象.constructor = 构造函数

    isPrototypeOf  
    obj.isPrototypeOf(p7) 判断 p7 的原型是不是 obj
  • 相关阅读:
    I'm Telling the Truth
    B-shaass and lights codeForces
    1
    不容易系列之(4)——考新郎 HDU
    犯人冲突
    不互质的和
    OI回忆录
    NOI2018退役记
    uoj221【NOI2016】循环之美
    uoj220【NOI2016】网格
  • 原文地址:https://www.cnblogs.com/debra/p/7798005.html
Copyright © 2011-2022 走看看