面向对象编程

1. 面向对象编程就是将你的需求抽象成一个对象,然后针对这个对象分析其特征(属性)与动作(方法)。这个对象我们称之为类。


面向对象----封装

1、创建一个类

    a. 首先声明一个函数保存在一个变量里

    b. 按编程习惯一般这个代表类的变量首字母大写

    c. 然后在这个函数(类)的内部通过对this(函数内部自带的一个变量,用于指向当前对象)添加属性或方法

    例如:

var Book = function(id,bookname,price){
	this.id = id;//通过this添加的属性,会在每次new实例化对象时创建。会多次创建
	this.bookname = bookname;
	this.price = price;
}
// 也可以通过在类的原型上添加属性和方法,有两种方法:
// 1.一一为原型对象属性赋值
	Book.prototype.display = function(){
		//展示这本书
	}
// 2.将一个对象赋值给类的原型对象
	Book.prototype = {
		display:function(){
			//展示这本书
		}
	}
//当使用功能方法时不能直接使用这个Book类,需要用new关键字来实例化创建新对象。
var book = new Book(111,'书名',50);
console.log(book.bookname);

2. 原型prototype跟对象constructor

prototype是对象的原型,在prototype中添加的属性不是对象自身的,需要通过prototype一级一级查找继承,不会新建。

constructor是对象原型prototype中创建的属性,他指向这个类对象本身。


var Book = function(id,name,price){
	// 私有属性
	var num = 1;
	// 私有方法
	function checkId(){};

	// 特权方法    (new实例化时复制到新创建对象上)
	this.getName = function(){};
	this.getPrice = function(){};
	this.setName = function(){};
	this.setPrice = function(){};

	// 对象公有属性
	this.id = id;
	// 对象公有方法
	this.copy = function(){};
	// 构造器
	this.setName(name);
	this.setPrice(price);
}

// this上的属性跟方法,new出的新对象可以访问。
// 在类外面用点语法添加的属性和方法,new对象不能访问

// 类静态公有属性(对象不能访问)
Book.isChinese = true;

// 类静态公有方法(对象不能访问)
Book.resetTime = function(){
	console.log('newTime');
};

// 类通过prototype创建的属性跟方法在示例对象中是可以通过this访问到的。称为共有属性/方法
Book.prototype = {
	// 共有属性
	isJSBook : '是的',
	// 共有方法
	display : function(){}
}

var b = new Book(11,'书名',50);
console.log(b.num);//undefined num是Book的私有属性 对象无法访问
console.log(b.isJSBook);//是的   prototype上的属性方法可以访问  共有属性方法
console.log(b.id);//11  对象能访问  this上的属性方法  公有属性方法
console.log(b.isChinese);//undefined  对象无法访问  通过点添加的类静态属性方法

// 类的静态公有属性方法可以通过类的自身访问
console.log(Book.isChinese);//true
Book.resetTime();//newTime  类自身访问






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值