创建对象的四种方式

简介: 创建对象的四种方式

创建对象的三种方式


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


2.使用new字符创建对象


3.自定义构造函数


4.工厂模式创建对象


对象是指:具有属性和方法


我之前一直以为对象就是有属性没有方法,尴尬了。主要是忘记了。


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


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()是调用函数

1425695-20211122233556147-1073305511.png


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:构造函数通常首字母大写


1425695-20211122233416533-1623816085.png

当我们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(); //司藤


相关文章
|
存储 Kubernetes 数据可视化
|
前端开发 开发者 容器
Web站,前端接入钉钉扫码登录!
Web站,前端接入钉钉扫码登录!
|
9月前
|
人工智能 IDE Java
沉浸式演示:在新老项目中如何快速上手通义灵码 AI 程序员
沉浸式演示:在新老项目中如何快速上手通义灵码 AI 程序员
|
前端开发 开发者
CSS列表属性:list-style系列属性详解
CSS列表属性:list-style系列属性详解
763 40
|
机器学习/深度学习 数据采集 人工智能
ICLR 2024:RLHF有了通用平台和基准,天大开源,专攻现实决策场景
【4月更文挑战第21天】天津大学在ICLR 2024发布RLHF新框架Uni-RLHF,以人类反馈引导强化学习,降低奖励函数设计需求,适应现实决策场景。该框架提供通用平台和基准,支持大规模众包注释,促进研究。尽管面临准确捕捉人类反馈、数据质量和多任务处理等挑战,但开源特性加速了学术进步。[链接](https://arxiv.org/abs/2402.02423)
323 0
|
Android开发 数据格式 XML
Android图表库MPAndroidChart(五)——自定义MarkerView实现选中高亮
Android图表库MPAndroidChart(五)——自定义MarkerView实现选中高亮 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MPAndroidChart(一)——了解他的本质,方能得心应手...
3512 0
|
安全 网络协议 Linux
【公网远程手机Android服务器】安卓Termux搭建Web服务器
【公网远程手机Android服务器】安卓Termux搭建Web服务器
390 0
|
Arthas Java 测试技术
一次NSF FeignClient支持Apache HttpClient的优化
一次NSF FeignClient支持Apache HttpClient的优化
512 2
|
缓存 Kubernetes 应用服务中间件
安装最新版 Docker 及配置 Proxy
安装最新版 Docker 及配置 Proxy