我所理解的JS对象,构造函数和原型对象三角恋情

文章的由来

学习JS中,想要全面掌握面向对象程序的设计风格,对象模型(原型和继承),是其中的重点和难点,拜读过各类经典数据和各位前辈的技术文章,感觉太过高深,花了不少时间才搞明白 。个人智商是硬伤 /(ToT)/~~

基本概念

  • 1.对象:属性和方法的集合(变量个函数的分装)。每个对象都有一个__proto__属性,指向这个对象构造函数的原型对象。
  • 2.构造函数:用于创建对象的函数,通过new关键字生成对象,构造函数的首字母一般大写
  • 3.原型对象:每个函数都有一个prototype属性,它是指向原型对象的指针(原型对象在定义函数时同时被创建)

创建对象的方法

  • 使用构造函数个原型共同创建对象
function Person(name,age,job){//构造器函数
	this.name = name;
	this.age = age;
	this.job = job;
}
Person.prototype = {
	constructor: Person,//修正constructor指向问题
	sayName: function(){
		console.log(this.name)
	}
}
var person1 = new Person("TOM",29,"teacher")//实例化对象person1
console.log(person1)
//{age: 29 ,job: "teacher",name: "TOM",__proto__:object} 
//其中object指向的就是原型对象:Person.prototype指向的对象


var person2 = new Person("Jack","18","students")//

Alt
如上图构造器函数Person(),通过new关键字创建了两个实例化对象p1和p2,这两个对象都继承了来自构造函数Person()的prototype属性所指向的原型对象,

  • 仅使用原型对象创建
var Person = {name:"william"}//这个对象当成原型
var p1 = Object.create(Person)//生成实例对象
console.log(p1.name)//william  相当于p1.__proto__.name

Alt
如上图使用,Object.create()方法从原型对象上直接生成新的实例对象,新的对象p1继承了原型对象的属性和方法,但是这里没有用到构造函数。

敲黑板(笔记本记来 ,考试要考)

我们可以理解 构造函数是妈妈,原型对象是爸爸,实例对象是孩子,妈妈让孩子拥有私有能力。爸爸让他们拥有共有能力~~(这个共有能力其实都是爸爸代劳的 2333…)~~ 在没有使用构造函数的情况下,可以理解为克隆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值