面向对象篇

Posted 阿弥陀佛么么哒!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象篇相关的知识,希望对你有一定的参考价值。

function CreatePerson(name){
   this.name = name;
   this.showName = function(){
        alert(this.name);
   }
}
var p1 =new CreatePerson(‘张三‘);   
p1.showName(); //张三 

var p2 =new CreatePerson(‘李四‘); 
p2.showName(); //李四

上面的代码,看似没有什么问题,我们来看一个问题

console.log(p1.showName == p2.showName);       //false

看似同样的一个方法,对比起来却是false,这是因为,方法也是对象,而对象之间的比较不仅仅是值相等,而且引用地址也要相同,这两个函数的比较之所以不相等,就是因为虽然值相等,但是引用地址不相等,那么这也就意味着,同样的一个方法,要在内存中存放两份,现在是两个如果是100个这样的方法呢,就会大大的消耗内存,那么怎么解决这种问题呢,这就要说到js中一个非常重要的概念------原型,即prototype,原型就可以解决这种问题,不管多少,内存中都存在一份,我们来看代码怎么写

function CreatePerson(name){
   this.name = name;
}
CreatePerson.prototype.showName = function(){
    alert(this.name);
}
var p1 =new CreatePerson(‘张三‘);   
p1.showName(); //张三 

var p2 =new CreatePerson(‘李四‘); 
p2.showName(); //李四

console.log(p1.showName == p1.showName);  //true;

我们看到原型prototype是挂载在构造函数下面的,把方法再挂载到原型下面,我们可以看到,这个时候p1.showName和p2.showName就已经相等了,返回了true,

这样我们就写出了一个完整的面向对象的程序。

 

以上是关于面向对象篇的主要内容,如果未能解决你的问题,请参考以下文章

python 面向对象初级篇

第5篇-JAVA面向对象Ⅰ

面向对象——python篇

面向对象编程其实很简单——Python 面向对象(初级篇)

Python 面向对象(初级篇)

Python 面向对象(初级篇)