javascript——面向对象(1、工厂方式与构造函数)

1、什么是对象
对象是一个整体,对外提供一些操作。

2、什么是面向对象
使用对象时,只关注对象提供的功能,不关注其内部细节。
面向对象是一种通用思想,并非只在编程中运用

3、面向对象编程(OOP)的特点
封装:达到反复使用的目的
多态:父类和子类具有相同的操作,但是这些操作有各有区别
继承:从已有对象上,继承出新的对象

4、对象的组成
方法 —— 函数:过程、动态的
属性 —— 变量:状态、静态的

5、工厂方式构造对象

//最简单的,最原始的用来生产对象的方式
//用工厂方式构造对象
function createPerson(name, sex){	//构造函数
	//1、原料
	var obj = new Object()

	//2、加工
	obj.name = name;
	obj.sex = sex;

	obj.showName = function(){
		console.log(this.name)
	}
	obj.showSex = function(){
		console.log(this.sex)
	}

	//3、出厂 
	return obj;
}

var p1 = createPerson('blue', '男')
var p2 = createPerson('byu', '男')

工厂方式构造对象的缺点:
1、缺少new
-为什么要用new?使用new可以让构造函数得到很大的简化,并且可以提供一些新的特性
2、构造出来的对象都有一套自己的函数,浪费资源

解决没有new的问题

function createPerson(name, sex){
	//假想系统内部创建了一个this对象
	//var this = new Object()
	this.name = name;
	this.sex = sex;
	this.showName = function(){
		console.log(this.name)
	}
	this.showSex = function(){
		console.log(this.sex)
	}
	//假想系统最后将this返回出去
	//return this;
}
var p1 = new createPerson('blue', '男')
var p2 = new createPerson('byu', '男')

解决浪费内存的问题
利用原型prototype,直接给类(构造函数)添加方法,原型的一个重要功能就是可以扩展系统对象。
类与对象(实例)的区别:在var arr = new Array()中,arr为对象,Array为类。类不具体实际功能,只能用来构造对象,对象具备实际功能,被类构造出来的

function createPerson(name, sex){

	this.name = name;
	this.sex = sex;
}

//利用原型prototype,直接给类(构造函数)添加方法
createPerson.prototype.showName = function(){
		console.log(this.name)
	}
createPerson.prototype.showSex = function(){
		console.log(this.sex)
	}

var p1 = new createPerson('blue', '男')
var p2 = new createPerson('byu', '男')

可以通过原型来给对象添加属性,但是直接给对象本身添加的属性优先级更高,但是通过原型添加的属性不会消失,只是暂时隐藏

Array.prototype.a = 12
var arr = [1, 2, 3]
alert(arr.a)	//12
arr.a = 5
alert(arr.a)	//5
delete arr.a
alert(arr.a)	//12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值