首页 > 代码库 > js面向对象编程

js面向对象编程

1、javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。

2、因为JavaScript中没有class,所以有人把类也成为原型对象。

 

function Cat(){

}

Cat();//函数

var cat1=new Cat(); //

js中的对象的属性可以动态添加;属性没有限制。

 

类(原型对象)--如何自定义类(原型对象)和对象:

1、工厂方法--使用new Object创建对象并添加属性;

2、使用构造函数来定义类(原型对象)

3、使用prototype

4、构造函数及原型混合方式

5、动态原型方式

 

基本语法

function 类名/原型对象(){

}

function Person(){}

var a=new Person();

window.alert(a.constructor); //a对象实例的构造函数

window.alert(typeof a);    //a的类型是什么

var b=”1234”;

window.alert(b.constructor);  //b对象实例的构造函数

window.alert(typeof b);  //b的类型是什么

 

如何判断一个对象实例是不是Person类型?

if(a instanceof Person){

window.alert(“aperson”);

}

if(a.constructor==Person){

window.alert(‘aperson’);

}

 

对象----function特别说明:

1、在js中一切都是对象

2、类(原型对象)其实也是对象,它实际上是Function类的一个实例,通过类我们可以创建自己的对象实例。

 

对象实例---如何访问(使用)对象实例的成员变量

(1)、对象实例名.属性名

(2)、对象实例名.[“属性名”];

 

var a=90; //全局变量

function  test(){

a=900;    //在函数里,如果不带var,则表示使用全局变量的a变量

  //如果带上var则表示在test()中,定义了一个新的a变量

}

test();

window.alert(a);

 

jsthis的用法:哪个对象实例调用this所在的函数,那么this就代表哪个对象的实例。

〉〉this不能在类定义的外部使用,只能在类定义的方法中使用。如果放在外部使用,调用者就不再是类的实例了。

function  Person(){

var  name=”abc”; //var修饰的name是私有的,只能内部使用

var   age=90;    

this.name2=”abc2”;  //this.name2表示name2这个属性是公开的

this.show=function(){ //这个就是Person类的一个公开方法(特权方法)

window.alert(name+” ”+age);

}

function  show2(){  //这是Person类的一个私有方法

}

}

var  p=new Person();

window.alert(p1.name=” ”+p1.age+”  ”+p1.name2); //错误

 

//p1.name->undefined  p1.age->undefined  p1.name2->abc2

 

给对象添加方法还有两种方式:

第一种:

function  类名{

this.属性;

}

var  对象名=new 类名(); //创建对象

function  函数名(){

//执行

}

对象名.属性名=函数名; //这样相当于把函数赋给对象名.属性名,

//此时这个属性名就表示一个函数

对象名.属性名;

 

第二种:

对象名.属性名=function(参数列表){

}

调用:对象名.属性名(实际参数);

js面向对象编程