面向对象快速入门

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(); 

以上是关于面向对象快速入门的主要内容,如果未能解决你的问题,请参考以下文章

Python3快速入门Python3面向对象

面向对象存储框架:Obase快速入门

Elasticsearch学习之快速入门案例

零基础快速入门Java的秘诀

学习Go语言快速入门

[易学易懂系列|rustlang语言|零基础|快速入门|(14)]