zoukankan      html  css  js  c++  java
  • 创建对象的四种方式

    创建对象的三种方式

    1.字面量的方式去创建对象
    2.使用new字符创建对象
    3.自定义构造函数
    4.工厂模式创建对象
    对象是指:具有属性和方法
    我之前一直以为对象就是有属性没有方法,尴尬了。主要是忘记了。
    

    1.通过字面量的方式去创建对象

    
    var person1={
        name:'柯南',
        age:12,
        sex:'男',
        eat:function(){
            console.log("我饿了,想吃饭")
        },
        say:function(){
            console.log("我叫柯南")
        }
    }
    console.log("person.eat输出函数",person.eat)
    person.eat(); //直接输出 我饿了,想吃饭
    
    我们需要注意的是person.eat和person.eat()的区别
    person.eat是输出函数
    person.eat()是调用函数
    

    2.使用new字符创建对象

    var person2=new Object();
    person2.name='柯南'
    person2.age='21'
    person2.sex='男'
    person2.eat=function(){
        console.log("我饿了,想吃饭")
    }
    person2.say=function(){
        console.log("我叫柯南")
    }
    console.log( '性别',person2.sex ) //输出男
    

    上面这两种方式去创建对象的缺点

    虽然上面这两种都可以去创建对象
    但是我们创建出来的对象压根就不知道是什么类型?
    当然我们知道他们是OBject类型
    这个时候我们就需要使用自定义构造函数去创建对象了
    

    3.自定构造函数创建对象

     function Person(name,age,sex,like){
        console.log('没有给like形参传递值就是undeined',like)
        // 这里的this指向的是Person这个对象
        console.log('this',this)
        this.name=name;
        this.age=age;
        this.sex=sex;
        this.say=function(){
            console.log("我叫",name)
        }
    }
    //这一行代码表示的是创建一个对象
    //同时实例化一个对象
    //并且给这个对象的属性进行初始化
    //所以这一行代码并不简单
    let per1=new Person('柯南',19,'男');
    per1.say();
    console.log(per1 instanceof Person);//true
    
    现在我们知道了per1是属于Person类型的
    这就是自定构造函数创建对象的优势
    我们知道它创建的对象是哪个类型的
    ps:构造函数通常首字母大写
    

    当我们new一个对象的时候做了四件事情

    通过创建自定义对象我们明白了
    当我们new一个对象的时候做了四件事情
    1.开辟空间存储当前对象
    2.把this设置为当前对象
    3.设置属性和方法
    3.把this对象返回
    

    4.工厂模式创建对象

    function createObj(name,age) {
        let obj=new Object();
        obj.name=name;
        obj.age=age;
        obj.sayHi=function(){
            console.log(obj.name)
        }
        return obj;
    }
    let per=createObj('司藤',200)
    console.log(per.age); //200
    per.sayHi(); //司藤
    
  • 相关阅读:
    14.4.9 Configuring Spin Lock Polling 配置Spin lock 轮询:
    14.4.8 Configuring the InnoDB Master Thread IO Rate 配置InnoDB Master Thread I/O Rate
    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
    14.4.7 Configuring the Number of Background InnoDB IO Threads 配置 后台InnoDB IO Threads的数量
    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
    14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering
    14.4.5 Configuring InnoDB Change Buffering 配置InnoDB Change Buffering
    14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
    14.4.4 Configuring the Memory Allocator for InnoDB InnoDB 配置内存分配器
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/15591109.html
Copyright © 2011-2022 走看看