面向对象初步理解
程序员文章站
2022-04-04 22:03:19
oop:抽象,封装(只能通过对象来访问方法),继承(从已有对象),多态 oop组成:方法:对象下面的方法 arr.push()arr.sort() 属性:对象下面的变量 例子:var obj=new Object();//创建一个空对象 obj.name=‘小明’; obj.showNmae=fun ......
oop:抽象,封装(只能通过对象来访问方法),继承(从已有对象),多态
oop组成:方法:对象下面的方法 arr.push()arr.sort()
属性:对象下面的变量
例子:var obj=new Object();//创建一个空对象
obj.name=‘小明’;
obj.showNmae=function(){
alert(this.name);//关键:this的用法
}
obj.showName();
工厂方式:面向对象的封装函数
function createPerson(name){
//1、原料
var obj=new Object();
//2、加工
obj.name=name;
obj.showName=function(){
alert(this.name);
};
//3、出场
return obj;
}
var p1=createPerson(‘小明’);//创建出来的对象,相当于obj
p1.showName();//调用对象方法
重点:当new去调用一个函数,此时this就是函数创建出来的对象,而且函数的返回值直接就是this啦(隐式返回)
上式可改为:
function createPerson(name){
this.name=name;
this.showName=function(){
alert(this.name);}
}
var p1=new CreatePerson(‘小强’);
p1.showName();
对象的引用
基本类型:赋值的时候只是值的复制
对象类型:赋值不仅是值的传递也是引用的传递
var a=【1,2,3】;
var b=a;
b.push(4);
alert(a); //【1,2,3,4】
alert(b); //【1,2,3,4】
原型
改写对象下面公用的方法或属性,让公用的方法或者属性在内存中存在一份(提高性能)
//原型:css中的class
//普通方法:css中的style
原型:prototype,要写在构造函数下面
var arr=【1,2,3,4,5】;
Array.prototype.sum=function(){
var result=0;
for(var i=0;i<this.length;i++){
; result +=this【i】;
}
}
alert(arr.sum())
this 指向问题
事件或者定时器,尽量让面向对象中的this指向对象
prototype 属性使您有能力向对象添加属性和方法。