• 创建对象的三种方式


    对象有特征(属性)和(方法)

    方式一:通过系统的构建函数(Object)来创建对象

    var obj  = new Object();  //Object为系统的构造函数 
    obj.name="小明";  //添加属性  ————对象名.名字=值;
    obj.eat=function(){   //添加方法  ————对象名.名字=函数;
            console.log("做饭");
        };
    console.log(obj.name); //调用属性
    obj.eat(); //调用方法

    方式二:自定义创建构造函数

      构造函数与普通函数的区别:名字不一样,构造函数首字母大写

      构造函数:创建对象

      普通函数:进行调用

    function Car(color,money){   //定义构造函数
                this.color=color;
                this.money=money;
                this.sudu=function(){
                    console.log("你好,我的颜色是"+this.color+"需要"+this.money+"元");
                }
            }
            
            var jipu1 = new Car("red",30000);   //创建对象
            var jipu2 = new Car("gray",78000);
            
            jipu1.sudu();    //调用构造函数方法
            jipu2.sudu();

    /**
    * 自定义构造函数创建对象(var jipu1 = new Car("red",30000);)时,做了4件事
    * 1、在内存中开辟(申请一块空闲的空间)空间,存储创建的新的构造函数
    * 2、把this设置为当前属性
    * 3、设置对象的属性和方法的值
    * 4、把this这个对象返回
    */

    方式三:字面量方式创建构造函数

    var obj={};
            obj.name="小明";
            obj.heigh=165;
            obj.eat=function(){
                console.log(obj.name+"吃饱了");
            }
            obj.eat();

    优化后的写法

    var a=10; //字面量方式创建变量
            var arr=[34,57,98];  //字面量方式创建数组
            var objj={      //字面量方式创建对象
                name:"花儿姐",  /* 用逗号隔开 */
                age:21,
                eat:function(){
                    console.log(this.name+"要吃饭啦哈哈哈");
                },
                play:function(){
                    console.log(this.age+"岁的"+this.name+"要去打羽毛球啦呀");
                }
            };
            objj.eat();
            objj.play();

    缺陷:一次性对象

    如果想一次性创造多个对象——通过函数创建

    通过工厂模式创建对象

    function creatObject(name,age){
                var obj = new Object();
                obj.name=name;
                obj.age=age;
                obj.sayHi=function(){
                    console.log("你好,我叫"+this.name+"今年"+this.age+"岁");
                };
                return obj;
            }
            var xiaoming = creatObject("小明",12);
            var xiaohua = creatObject("小花",8);
            xiaoming.sayHi();
            xiaohua.sayHi();

    分辨出变量(对象)属于什么类型 instanceof
    语法: 变量 instanceof 类型名 ---->布尔类型 true 就是这种类型 false 不是这种类型
    console.log(phone instanceof Object); //true

    console.log(jipu1 instanceof Car);  //true
            console.log(jipu2 instanceof Car); //true
            console.log(jipu3 instanceof Car); //false
            console.log(jipu4 instanceof Car); //false
            console.log(jipu4 instanceof Object); //true
  • 相关阅读:
    在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
    线程的5种状态详解
    哈希表(Hash Table)原理及其实现 【转载】
    notify() 和 notifyAll() 有什么区别? wait()
    B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因 【转】
    pthread_join和pthread_detach的用法 【】转载】
    什么是进程?什么是线程
    进程间的五种通信方式介绍【转载】
    81. Search in Rotated Sorted Array II
    33. Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/zhangDY/p/11319847.html
Copyright © 2020-2023  润新知