js——面向对象

1:什么是对象?

a:对象就是由若干个键值对,无须组成的数据类型,被称之为对象。
b:简单理解,提供了特有的方法和属性就是对象!
c:“对象”是一个容器,封装了“属性”(property)和“方法”(method)。
举例:
var o={
	name:'tom',
	age:12,
	fun:function(){
		alert(1)
	}
}

2:键值对?

花括号里面冒号前被称之为键,冒号后被称之为值,通过键获取值。

3:什么是面向对象?

面向对象是一种编程思想,通过这种思想来完成代码的编程。(oop==Object Oriented Programming)

4:面向对象的特点?

a、抽象:
b、继承:
c、封装:
d、多态性:

5:学习面向对象的优点?

a:理解这种思想以后,我们可以自己创建一些方法和功能!
b:可以给其他对象扩展方法

6:什么是方法和属性,什么是函数和变量?

变量:是自由自在一个数据;
属性:必须绑定在对象下面的数据;
函数:是一个代码块的集合;
方法:是绑定在某一个对象下面的函数

7:工厂模式的写法

1:在一个函数里面创建一个对象
2:给这个函数创建属性和方法
3:return返回对象
4:把函数赋值给一个变量,那么这个变量就拥有了函数的属性和方法
5:调用
举例:
function person(name,age){
		var o=new Object();
		o.name=name;
		o.age=age;
		o.f=function(){
			alert(this.name+this.age)
		}
		return o;
	}
	
	var o1=new person('tom',12)	;
	var o2=new person('jack',14)	
	o1.f();
	o2.f();

8:工厂模式的优点:

解决了同一个接口创建很多对象,会产生大量重复的代码的问题

9:当函数被关键字 new 以后,那么这个函数就变成了对象,对象就可以共享自己的方法和属性!

10:实例化和类,对象的概念

function a(){

}
var o=new a();
对象:函数被关键字 new 以后就变成了对象
类:函数被关键字new完以后这个整体(new a())被称之为类
	类的作用就是一个模具,通过这个模具可以复制很多对象。

实例化:函数被关键字 new完以后,赋值给一个变量的过程叫实例化  var o=new a();
		变量被实例化后,就拥有了函数对象里面的属性和方法。

11:构造函数写法:

举例:
function Peop(name,age){
	this.name=name;
	this.age=age;
	this.fun=function(){
		alert(this.name+this.age);
		alert(this)
	}
}
var p1=new Peop('老栗',18)
var p2=new Peop('小李',118)
p1.fun();
p2.fun();

12: 工厂模式和构造函数的区别?

1:工厂模式的函数里面要创建一个对象,构造函数没有
2:工厂模式的函数里面要用return 返回,构造函数没有
3:工厂模式的函数赋值给变量的时候不用new 关键字,构造函数有 new
4: 工厂模式的函数不需this  ,构造函数有this
5:构造函数的函数名首字母需要大写,工厂不需要

13:读取属性的方式:

举例:
var o={
	name:'老栗',
	age:18,
}
alert(o.name)
alert(o['age'])

14:删除属性方法

	删除属性的唯一方法是使用 delete 操作符;
	设置属性为 undefined 或者 null 并不能真 正的删除属性, 
	而仅仅是移除了属性和值的关联。

15:call()和apply()方法

call()和apply()方法都具有改变this指向的作用,this这个时候指向的是call()方法里面的参数。

16:原型是什么?

a:prototype翻译过来叫原型。
b:prototype即是函数的属性,本身也是对象。
c:prototype存在于函数中。

17:原型prototype的作用?

原型prototype的作用就是可以共享。
通过prototype可以共享对象属性和方法!

18:原型的写法:

	举例1:
	var arr1=new Array(1,2,3,4);
	var arr2=new Array(1,2,3,4,5);
	Array.prototype.jia=function(){
		var r=0;
		for(var i=0; i<this.length; i++){
			r+=this[i]
		}
		return r;
	}
	alert(arr1.jia())
	alert(arr2.jia())
	举例2:
	function F(){
		
	}
	F.prototype.name='老栗';
	F.prototype.age=15;
	F.prototype.fun=function(){
		alert(this.name+this.age)
	}
	var o1=new F();
	var o2=new F();
	o1.fun();//老栗15
	o2.fun();//老栗15

19: prototype constructor proto 三者之间的关系

1:每一个函数都有一个prototype属性,但是prototype属性本身又是Obj类型的对象
	因此我们可以通过prototype 给这个对象添加属性和方法
1.1  prototype的作用就是为了解决实例对象之间属性和方法的共用问题

2:prototype对于函数来说他是一个属性,但是对于实例对象来说他是一个对象,(他是本身也是一个对象)
构造函数通过这个属性就可以演化成原型对象,原型对象在通过关键字new给一个变量,
那么这个变量就是实例对象

3:constructor是prototype下面的一个属性
实例对象通过constructor 指向了函数


4:js中每一个对象都有自己的__proto__属性
实例化对象通过__proto__ 指向了原型对象

20:原型+构造写法:

	原型+构造写法解决了想共享的写在prototype下面,不想共享的写在构造函数里面
function F(name,age){
	this.name=name;
	this.age=age;
}
	
F.prototype.fun=function(){
		alert(this.name+this.age)
}
var o1=new F('哈哈',12);
	var o2=new F('看看',122);
	o1.fun()
	o2.fun()
	alert(o1.fun==o2.fun)//true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值