天天看點

Javascript面向對象二

Javascript面向對象二

可以通過指定原型屬性來對所有的對象指定屬性,

Object.prototype.name="zhangsan";

        Object.prototype.getType=function(){

            var a=typeof(this);

            alert(a);

        }

        var o=new Object();

        var o2={};

        var d=new Date();

        o.getType();

        o2.getType();

        d.getType();

        alert(o.name);

        alert(o2.name);

        alert(d.name);

//繼承

Javascript中沒有extends 關鍵字

但是可以通過類的prototype實作繼承

function Person(){

        Person.prototype={

            name:"張三",

            show:function(){

                alert(this.name);

            }

        function Child(){

        Child.prototype=Person.prototype;

        var c=new Child();

        c.show();

當改變Child的原型的show方法的時候,

Person對象的show也就改變了。

Child.prototype.show=function(){

            alert("這個方法已經改變了");

        var p=new Person();

        p.show();//提示為這個方法已經改變

為了在改變Child的屬性的時候 不改變Person的屬性 我們可以通過 for in 和prototype屬性來完成繼承

function Person(){}

            name:"zhangsan",

                alert(this.name);    

        function Child(){}

        for(var p in Person.prototype){

            Child.prototype[p]=Person.prototype[p];

        Child.prototype.show=function(){

            alert("方法已經改變");

        var p1=new Person();

        c.show();//方法已經改變

        p1.show();//zhangsan

可以為每一個對象指定一個特有的方法來實作繼承

Function.prototype.extend=function(source){

            for(var p in source.prototype){

                this.prototype[p]=source.prototype[p];

        function Person(){}

        Child.extend(Person);

//        for(var p in Person.prototype){

//            Child.prototype[p]=Person.prototype[p];

//        }

共有成員、私有成員和靜态成員

Javascript并沒有專門的機制來處理這些便量

想Java中我們通常定義類的時候會這麼寫

* public class Person{

         *          private String name;

         *         public void setName(String name){

         *             this.name=name;

         *         }

         *         public String getName(){

         *             return this.name;

         * }

而Javascript中我們得這麼寫

            var name;//私有的成員

            this.setName=function(nm){

                this.name=nm;

            this.getName=function(){

                return name;

我們可以這麼使用了

Var p=new person();

p.setnema("zhangsan");

p.getname();

javascript中定義靜态成員和方法

person.staticName="這是一個人";

person.staticMothod=function(){

    alert(person.staticNamse);

}

靜态的屬性和方法可以直接通過類名直接調用

Person.staticMothod();

注意:一個類的執行個體不能調用這個類的靜态方法