首页 > 代码库 > 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(“a是person”);
}
if(a.constructor==Person){
window.alert(‘a是person’);
}
对象----function特别说明:
1、在js中一切都是对象
2、类(原型对象)其实也是对象,它实际上是Function类的一个实例,通过类我们可以创建自己的对象实例。
对象实例---如何访问(使用)对象实例的成员变量
(1)、对象实例名.属性名
(2)、对象实例名.[“属性名”];
var a=90; //全局变量
function test(){
a=900; //在函数里,如果不带var,则表示使用全局变量的a变量
//如果带上var则表示在test()中,定义了一个新的a变量
}
test();
window.alert(a);
js中this的用法:哪个对象实例调用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面向对象编程