js面向对象编程知识

主要内容:

1,constructor类的构造器,实例调用类构造器,构造函数

2,instanceof判断实例是否属于某个类

3,typeof判断变量指向类型

4,this实例指针

5,delete 类属性的删除,删除属性,类成员删除

6,prototype原型对象,类的扩展,扩展类属性,扩展类方法

7,静态属性,静态方法

8,私有属性

1,js类的构造器constructor

  简单说可以理解为类的初始化函数,或者说类在实例化时自动执行的函数

  简单例子:

function TestClass(){
    this.a = "s";
    alert(1);
  }
  var Nobj = new TestClass();
  //主动调用构造函数
  Nobj.constructor();
 //执行后发现弹出两次1,证明构造器在实例化时执行了。主动调用也执行了

2,判断实例是否属于某个类
alert( Nobj instanceof TestClass);

3,判断变量指向类型
console.log(typeof Nobj)

4,实例指针this

console.log(Nobj.a)
//此时TestClass中的this就指向Nobj

谁调用构造器,那么构造器内部的this指针就指向“谁”


5,类属性的删除

语法:delete 对象名.属性

删除是原处修改,返回的是布尔值,无论属性存在没都返回true,所以不能用于判断属性是否存在 

delete Nobj.a


6,原型对象prototype

简单理解:就是对象在找不到属性或方法的时候,会在一个叫原型对象的地方寻找,而prototype可以为原型对象扩展方法和属性。每一个类都有一个原型对象。

作用:

①修改属性

原型对象属性的修改,将影响所有的类的实例,只有实例独立设置了改属性,才不会受到影响

function TestClass(){
this.a = "s";
}
var obj1 = new TestClass();
var obj2 = new TestClass();
obj1.b = 10;
TestClass.prototype.b = 20;
console.log(obj1.b) //10
console.log(obj2.b) //20


②扩展原先的类 

//扩展js内置的Date类,作用:返回未来几天的时间戳
Date.prototype.otherDate = function(day){
var newday = parseInt(day);
var end = new Date();
var d = new Date(end.valueOf() + 1*24*60*60*1000*newday);
return d;
}
//调用:
var ndate = new Date();
ndate.otherDate(10);


③继承

js不支持多重继承,语法上也并没有继承,可以利用prototype进行模拟继承

function TestClass1(){
this.a = "TestClass1";
}
function TestClass2(){
this.b= "TestClass2";
}
TestClass1.prototype =new TestClass2();
var obj1= new TestClass1();
console.log(obj1.b)
//TestClass1继承了TestClass2的b属性


7,静态属性/方法

在js类中,以类名定义的属性和方法称为静态属性/方法。

静态属性和方法不会被继承,也不会实例化给子类,只能通过类名.属性/方法调用

//静态属性计数
function TestClass(){
    TestClass.count++,
    TestClass.getCount=function(){
       return TestClass.count;
    }
}
TestClass.count=0;
var obj1= new TestClass();
var obj2= new TestClass();
var obj3= new TestClass();
console.log(TestClass.getCount()) //3


8,私有属性

通过this指针的定义的都是共有属性

通过var定义的都是私有属性

类的私有属性在不能通过实例来访问,保证类的环境独立。

类的内部私有属性的可以直接访问

function TestClass(){
  var s = 5;
  this.getData=function(){
    s++;
    return s;
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值