• 创建对象的四种方式


    创建对象的三种方式

    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(); //司藤
    
  • 相关阅读:
    前端下载(导出)功能实现
    cookie和session
    MySQL常用数据类型
    Spring AOP小结
    Spring IoC小结
    BST、B树、B+树、B*树
    java中的匿名内部类小结
    java中的内部类小结
    Collections类常用方法总结
    Java垃圾回收小结
  • 原文地址:https://www.cnblogs.com/IwishIcould/p/15591109.html
Copyright © 2020-2023  润新知