浅谈javascript中的面向对象

javascript并不像java.c++一样,它是不带有面向对象的三大特征的,但它可以模拟面向对象的三大特征

首先我们来说说关于javascript中的基础

1.javascript中的创建对象方式有两种

(1)初始化器创建

 var a={

    name:"阿通";

    shout:function(){

    alert("出来吧");

}

}

初始化器说以键值对的方式创建方法和属性的

(2)构造函数方式

function Dog(name,age){

    this.name=name;

    this.age=age;

    this.shout=function(){

    alert("啊啊")

}

}

注意要加上this

2.对象属性定义

function C(){

   var a="大王"//私有属性

    this.b="阿拉丁"//对象属性

}

C.classpro="小王"//类属性,类似于java中的static

3.对象方法定义

function D(){

    var af=function(){};//私有方法

    this.bf=function(){};//对象方法

}

  D.function(){};//类方法

4.javascript中的封装

没啥好说的

5.javascript中的继承

(1)apply():实现父类的方法和属性

function Animal(name){

    this.name=name;

    this.say=function(){

    alert(“名字”+this.name)

}

}

function Dog(name){

    Animal.apply(this.[name]);//apply()继承只是把父类的属性和方法搬给子类而已

}

var jack=new Dog("笨蛋");//注意,这里的var jack是属于Dog类的

(1)prototype():实现原型的继承

function Animal(name){

    this.name=name;

    this.say=function(){

    alert(“名字”+this.name)

}

}

function Dog(name){

    Animal.apply(this.[name]);//apply()继承只是把父类的属性和方法搬给子类而已

}

Dog.prototype=new Animal;//将Dog的原型给new Animal

var jack=new Dog("笨蛋");//注意,这里的var jack是属于animal类的

6.javascript中的多态

function Animal(){
this.say=function(){
alert("我是动物");
};
}

function Dog(){
this.say=function(){
alert("我是狗");
};
}
Dog.prototype=new Animal();

function Cat(){
this.say=function(){
alert("我是猫");
};
}
Cat.prototype=new Animal();

function say(animal){
if(animal instanceof Animal){
animal.say();
}
}

var dog=new Dog();
var cat=new Cat();
say(dog);

say(cat);

大家应该看懂了吧,这多态就是java中的向上转型

猜你喜欢

转载自blog.csdn.net/weixin_39051908/article/details/80976679