在JS中 如何给一类, 是一类不是某一个HTML标签添加一个方法;

在JS中 如何给一类, 是一类不是某一个HTML标签添加一个方法;,第1张

只能给Element的原型添加方法咯,Element是所有元素的父类

Element.prototype.myFunction = function(){alert("aaaaaaaaa")}

这样所有的元素都能调用这个方法,不只form元素。div。span元素都可以调用,只能form或者div一类元素添加方法暂时没想到怎么做。

现在有如下一个Person类:

类中定义了基本属性name 和age

```

  function Person( name, age){

        this.name = name||"lorentz"

        this.age  = age||27

    }

```

首先我们给它添加一个实例方法,即通过实例化该类,在类的实例上可以调用的方法

```

function Person( name, age){

        this.name = name||"lorentz"

        this.age  = age||27

    }

      //定义在原型上的方法 可以在实例上直接调用

    Person.prototype.sayAge = function(){

        console.log(`my age is ${this.age}`)

    }

    let p1 = new Person()

    p1.sayAge()  //my age is 27

```

通过构造函数的原型,定义了一个sayAg方法,所有的实例都可以通过原型链调用该方法。

静态方法即不需要实例化,可以直接利用构造函数调用的方法。在JS中,函数也是一个对象。将构造函数对象的某个属性设置为一个函数即为静态方法:

注意静态方法里this指向构造函数对象Person,而不是构造函数的实例

```

   function Person( name, age){

        this.name = name||"lorentz"

        this.age  = age||27

    }

      //定义在原型上的方法 可以在实例上直接调用

    Person.prototype.sayAge = function(){

        console.log(`my age is ${this.age}`)

    }

    Person.staticMethod = function(){

        console.log(`i am a static method `) //i am a static method 

        //静态方法中的this指向Person这个构造函数对象,在该对象里是没有age这个属性的

        console.log(`my age is ${this.age}`) // my age is undefined

        console.log(this)  //[Function: Person] { staticMethod: [Function (anonymous)] }

    }

    Person.staticMethod()   

```

在构造函数里定义私有方法,该方法无法在外部直接访问,通过闭包可以访问该方法

注意此时Person是一个普通函数,返回了一个对象,通过返回的对象可以访问他的私有方法

```

 function Person( name, age){

        this.name = name||"lorentz"

        this.age  = age||27

        let privateMethod = function(){

            console.log(`i am a priviate method`)

        }

        return {

            fn: privateMethod

        }

    }

    let p = Person()

    p.fn()  //i am a priviate method

```

抽象类可以实现方法,但是不可以实例化。

举例:

public abstract class A{

public void a(){//实现的方法a

}

public abstract void b()//<a href="https://www.baidu.com/s?wd=%E6%8A%BD%E8%B1%A1%E6%96%B9%E6%B3%95&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YzPAf3uyRkuWfzn10drH0d0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHm3njRdPHR3" target="_blank" class="baidu-highlight">抽象方法</a>

}

补充抽象类特点:

1. 抽象方法 abstract void f()抽象方法不能包含有任何方法的BODY 。

2. 如果一个类包含1个或者多个抽象方法, 则该类必须限定为抽象的。

需要在前面指定 abstract 关键字。

(1)抽象类不能被实例化

(2)包含抽象方法的类,必须标识 abstract

3. 如果从一个抽象类继承, 必须对所有抽象方法进行覆盖 , 否则导出类也是抽象的

4. 也可以考虑创建没有任何抽象方法的抽象类 。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8015636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存