面向对象快速入门
Posted rickyctbur
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象快速入门相关的知识,希望对你有一定的参考价值。
一、对象的组成:
①方法(行为、操作)------- 函数:过程、动态的,也就是对象下面的函数
②对象的属性 ------ 变量: 静态的,也就是对象下面的变量
对象快速入门案例:
//构造函数 function CreatPerson(name,sex) this.name = name; this.sex = sex; //对象原型方法:prototype式关键字,相当于所有创建的对象都包含该方法 CreatPerson.prototype.showname = function() alert(this.name) //创建一个对象 var p1 = new CreatPerson(‘小明‘,‘男‘); //对象的传递方式是引用传递,当更改p2的某一个属性则p1的属性也将更改 var p2 = p1; p2.sex = ‘女‘; //弹出p1.sex则会随p2变成女 alert(p2.sex);
二、对象的继承:
拷贝继承:通用型,有new或者无new都适合
//继承 : 子类不影响父类,子类可以继承父类的一些功能 ( 代码复用 ) //属性的继承 : 调用父类的构造函数 call //方法的继承 : for in : 拷贝继承 (jquery也是采用拷贝继承extend) function CreatPerson(name,sex) // 构造函数:父类 this.name = name; this.sex = sex; //原型 CreatPerson.prototype.showName = function() alert(this.name); var p1 = new CreatPerson(‘小明‘,‘男‘); p1.showName(); function CreatStar(name,sex,job) // 子类 CreatPerson.call(this,name,sex);//继承CreatPerson的属性 this.sex = job; //obj1.prototype = obj2.prototype;直接赋值会造成更改任意一个obj都会改变另一个obj的方法 //创建函数拷贝obj2的方法赋值给obj1 function extend(obj1,obj2) for(var attr in obj2) obj1[attr] = obj2[attr]; extend( CreateStar.prototype , CreatePerson.prototype );//继承CreatPerson的方法 //CreateStar.prototype改变不会对CreatePerson.prototype造成影响 CreateStar.prototype.showJob = function() ; var p2 = new CreateStar(‘黄晓明‘,‘男‘,‘演员‘);
类式继承:JS是没有类的概念的,我们可以把js中的构造函数看成是类。比较适合有new的形式
//属性和方法要分开继承 //父类对象的构造函数 function Parent() this.name = ‘小明‘; this.age = 25; Parent.prototype.showName = function() alert(this.name); //子类对象的构造函数 function Child() //子类的属性继承 Parent.call(this.) //创建一个空构造函数来接收Parent对象的原型 var F = function() //将Parent的原型赋值给F的原型 F.prototype = Parent.prototype; Child.prototype = new Parent(); //修正Child的指向 Child.prototype.constructor = Child; var c1 = new Child();
原型继承:比较适合无new的对象
var a = name:‘小明‘ var b = cloneObj(a); function cloneObj(obj) var F = function() F.prototype = obj; return new F();
以上是关于面向对象快速入门的主要内容,如果未能解决你的问题,请参考以下文章