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. 也可以考虑创建没有任何抽象方法的抽象类 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)