什么是面向对象以及其意义,prototpye原型
什么是面向对象:
使用对象时,只关注对象提供的功能,不关注其内部的细节 例如:jquery
什么是对象:
对象是一个整体对外提供一些操作,比如 收音机
面向对象编程OOP的特点:
1、抽象:把主要的特征、跟问题相关的特征抽出来
2、封装:看不到里面的东西,把表面的功能用好
3、继承:遗传,从父类上继承出一些方法,子类又有一些自己的特性(最大限度重用已有的代码)
继承又分:
多重继承
多态继承
对象的组成:
1、方法——相当于函数:过程、动态 例如:
function aaa(){ //函数 自由 alert("123") } arr = [1,2,3]; arr.aaa=function(){ //属于一个对象 alert("321") } aaa() arr.aaa()
2、属性——相当于变数:状态、静态 例如:
var a=12 //变量 - 自由自在的不属于任何人 alert(a) var arr=[1,2,3,4,5,6] arr.a=21 //属性 - 属于一个对象的 alert(arr.a)
this的理解
当前发生事件的对象
当前的方法属于谁
练习题:写一个面向对象的小例子
var obj = new Object(); obj.name='林肯'; obj.qq='2669667558'; obj.Myname=function(){ alert("我的名字是"+this.name); } obj.Myqq=function(){ alert("我的QQ是"+this.qq); } obj.Myname(); obj.Myqq();
总结:创建一个对象,写出程序的方法,在调用。 但是这种方法复用性不高。 优化以后如下:
//工厂模式 function oriented(name,qq){ //整体称之为什么:构造函数 //原材料 var obj = new Object(); //加工 obj.name=name; obj.qq=qq; obj.Myname=function(){ alert("我的名字是"+this.name); } obj.Myqq=function(){ alert("我的QQ是"+this.qq); } //出厂 return obj } var obj=oriented('林肯','2669667558'); obj.Myname(); obj.Myqq(); var obj2=oriented('赵三','2669667558'); obj2.Myname(); obj2.Myqq(); 这样写:可以让方法复用
原型——prototpye
什么是原型
可以把原型理解为class,修改他可以影响一类元素
//解决函数重复 <==>原型
//原型名词解释
// CSS JS
// class 一次给一组元素加样式 原型
// 行间样式 一次给一个元素加样式 对对象加事件
/*例子:原型 数组求和 <==> 类和对象的使用 类可以new */
var arr1 = new Array(12, 13, 11, 14, 53, 67, 86, 85, 23); var arr2 = new Array(11, 22, 33, 44, 55, 66, 77, 88); Array.prototype.sum = function () { var result = 0; for (var i = 0; i < this.length; i++) { result += this[i]; } return result; }; //alert(arr1.sum());
在已有的对象中添加属性,方法