你的位置:首页 > Java教程

[Java教程]面向对象的相关理论


面向对象 一、编程范式: 1.命令式编程,2.声明式 命令式编程的思想:面向过程,面向对象。声明式的思想:DSL(领域特定语言) 命令式编程的定义:告诉计算机以什么指令来执行代码。注重中间过程。 声明式的定义:告诉计算机想要什么结果就让计算机自己去执行。不需要关心过程。 面向过程:一步一步的向下执行。 面向对象:看待任何东西,先看待特征、行为。(接近人的思维) 二、产生对象的方法: 1.基于类的面向对象 2.基于原型的面向对象 对象是类的实例,类是对象的抽象。类不是真实存在的。js中没有的类的概念,js是通过原型面向对象。js是通过原型拷贝出来的。每一个对象都有一个原型,原型也是对象。 三、js中构建对象的方法: 1.字面量对象(json格式)例如: var stu={ name:"小明", age:20, learn:function(){console.log(this.name+"学习");} } 构造函数:构造对象,1>首字母大写,用this,此时this指向对象。 var Student={ this.name:"小明", this.age:20, this.learn:function(){console.log(this.name+"学习");} } var xm=new Student("小明",20); //我们用new调用函数 xm.learn(); 同一构造函数构造的对象,它们的原型是一样的, xm.constructor(构造函数本身) 四、为构造函数动态添加属性: 1.在构造函数中添加属性。 得到函数原型:1.Student.prototype.gender="男"; 2.xm.__proto__(指向各自原型) xm.__proto__ == Student.prototype(true) xm.__proto__和Student.prototype两者的区别: 1>通过构造函数名,prototype可以读也可以属性。 对象.__proto__只可以读不可以属性。 2>prototype只能访问在自身,不能向上访问。__proto__可以向上追逐到向上的原型。 3.构造函数+原型: Student.prototype.learn=function(){console.log(this.name+"学习");} 属性写在构造函数中,方法写在原型中。 var Student={ this.name=name, this.age=age, } 4.工厂方法 5.改进式构造函数+原型 在构造函数中用if(!Student._init){ Student.prototype.gender="男"; Student.prototype.learn=function(){console.log(this.name+"学习");} Student._init=true; //给对象——init赋值 } 五、垃圾回收器(GC) 定义:判断对象是否被其他所引用,把没有在引用的对象,有很大机率被关闭。(不断循环) 缺点:自动管理,不能人为管理。 但是,js中,可以把不用的变量设为stu=null;那么一个对象不能太大。 一旦垃圾回收器太忙,处理不过来,网页等会就会卡住 ,一旦它空闲了,网页就会恢复。六、对象的运算符 1.new 2.delete(删一个对象的属性)。例如:delete xm.name. 如果删原型的东西必须要原型里有。才能删除。七、对象的语句 1.with 例如: with(xm){console.log(name);} //xm是一个对象。 with对效率影响很大,不建议使用。 2.for..in(循环一个对象里的属性) for(var k in xm){ console.log(xm[k]); //循环xm中的所有属性。并打印中控制台 }