1. 使用对象字面量模式来创建一个对象 (它也叫“单例模式” //JS与其他语言的单例模式有很大的区别(如Java),但这就是语言的区别)

        var obj = {};
    
           /*
            * 使用对象字面量,可以在创建对象时,直接指定对象中的属性
            * 语法:{属性名:属性值,属性名:属性值....}
            *     对象字面量的属性名可以加引号也可以不加,建议不加,
            *     如果要使用一些特殊的名字,则必须加引号
            * 
            * 属性名和属性值是一组一组的名值对结构,
            *     名和值之间使用:连接,多个名值对之间使用,隔开
            *     如果一个属性之后没有其他的属性了,就不要写,
             */
            
        var obj2 = {
            
            name:"Julius",
            age:23,
            gender:"男",
            test:{name:"chen"}
            
        };


  1. 使用构造函数创建对象 (使用new关键字调用的函数,是构造函数constructor

    • 构造函数是专门用来创建对象的函数
    • 使用typeof检查一个对象时,会返回object)
 var obj = new Object();
       //向obj中添加一个name属性
        obj.name = "黎海霞同学";
        //向obj中添加一个gender属性
        obj.gender = "女";
        //向obj中添加一个age属性
        obj.age = secret;


  1. 使用工厂方法创建对象,通过该方法可以大批量的创建对象
function createPerson(name , age ,gender){
                //创建一个新的对象 
                var obj = new Object();
                //向对象中添加属性
                obj.name = name;
                obj.age = age;
                obj.gender = gender;
                obj.sayName = function(){
                    alert(this.name);
                };
                //将新的对象返回
                return obj;
            }
            var obj2 = createPerson("猪八戒",28,"男");
            var obj3 = createPerson("白骨精",16,"女");
            var obj4 = createPerson("蜘蛛精",18,"女");

  1. 使用构造函数创建对象 (

            * 使用工厂方法创建的对象,使用的构造函数都是Object
            *     所以创建的对象都是Object这个类型,
            *     就导致我们无法区分出多种不同类型的对象)
            
       * 创建一个构造函数,专门用来创建Person对象的
       *     构造函数就是一个普通的函数,创建方式和普通函数没有区别,
       *     不同的是构造函数习惯上首字母大写
       * 
       * 构造函数和普通函数的区别就是调用方式的不同
       *     普通函数是直接调用,而构造函数需要使用new关键字来调用
       * 
       * 构造函数的执行流程:
       *     1.立刻创建一个新的对象
       *     2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
       *     3.逐行执行函数中的代码
       *     4.将新建的对象作为返回值返回
       * 
       * 使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。
       *     我们将通过一个构造函数创建的对象,称为是该类的实例
    

function Person(name , age , gender){

        this.name = name;
        this.age = age;
        this.gender = gender;
        this.sayName = function(){
            alert(this.name);
        };
    }
    
    function Dog(){
        
    }
    
    var per = new Person("孙悟空",18,"男");
    var per2 = new Person("玉兔精",16,"女");
    var per3 = new Person("奔波霸",38,"男");
    
    var dog = new Dog();
    
    /*console.log(per);
    console.log(dog);*/
    
    /*
     * 使用instanceof可以检查一个对象是否是一个类的实例
     *     语法:
     *         对象 instanceof 构造函数
     * 如果是,则返回true,否则返回false
     */
    //console.log(per instanceof Person);
    //console.log(dog instanceof Person);
         
         * 所有的对象都是Object的后代,
         * 所以任何对象和Object做instanceof检查时都会返回true



         

         
         
         
         
         

JuliusDeng
12 声望2 粉丝