面向对象篇(四)

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,

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

原文地址:https://www.cnblogs.com/chenzhiyu/p/8376065.html

时间: 2024-10-10 09:44:40

面向对象篇(四)的相关文章

【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblogs.com/baiboy/p/wpf1.html 篇三:批量处理后的txt文件入库处理:http://www.cnblogs.com/baiboy/p/wpf2.html 篇四:关于OneNote入库处理以及审核:http://www.cnblogs.com/baiboy/p/wpf3.html [

java提高篇(四)_理解java的三大特性之多态 转自 http://cmsblogs.com

多态就是指程序中定义 的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该 引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定.因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让 引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个 运行状态,这就是多态性 一. 向上转型

【SSRS】入门篇(四) -- 向报表添加数据

原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到报表设计图画上,如下图: 1.打开在[SSRS]入门篇(一) -- 创建SSRS项目 建立的报表Sales Orders.rdl: 2.从工具箱把"表"拖放到"设计图画": 注:如果左边没有显示工具箱的话,可以通过"菜单 -> 视图 -> 工具箱&

〔C# Note〕面向对象篇

面向对象编程的三大特点:封装,继承,多态. 一.封装 封装就是把数据组合在一起,形成一个对象.将类封装了以后,对外提供可访问的属性和方法,外部对象通过这些属性和方法访问此对象的信息. 类是支持对象封装的工具,对象则是封装的基本单元. 封装的好处: 1.良好的封装能够减少耦合. 2.类内部的实现可以自由地更改. 3.类具有清晰的对外接口. 封装性主要由访问修饰符来控制. 在这里有五个访问修饰符,public,private,protected,internal,protected internal

FPGA基础入门篇(四) 边沿检测电路

FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电路设计中相当的广泛. 没有复位的情况下,正常的工作流程如下: (1)D触发器经过时钟clk的触发,输出trigger信号,保存了t0时刻的信号. (2)同时由trigger通过非门输出信号,保留了当前时刻t1的触发信号 (3)经过与门输出信号pos_edge,neg_edge a) 只有t0时刻为高

#5 Python面向对象(四)

前言 本节将是Python面向对象的最后一篇博文了,这节将记录类的特殊方法.特殊成员方法.旧类和新类的不同,以及一些其他知识.Go! 一.类的特殊方法 Python有三种特殊方法:实例方法.静态方法.类方法.如果你读过一些源代码,你一定疑惑过这些代码:@staticmethod.@classmethod,前面见到的所有方法都是实例方法,实例方法的第一个参数为实例本身(self),由于实例方法经过前面几节已经掌握,所有本节将会熟悉剩下的两种特殊方法 1.1 静态方法 之前在类中编写的各种方法其实都

Hybrid APP基础篇(四)->JSBridge的原理

说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:JS如何调用Native 第三步:Native如何得知api被调用 第四步:分析url-参数和回调的格式 第五步:Native如何调用JS 第六步:H5中api方法的注册以及格式 进一步完善JSBridge方案 思路 实现 注意 完整的JSBridge 完整调用流程图 另外实现:不采用url sche

java学习之面向对象的四个特性

对象:由行为.状态和唯一标志组成. 一 抽象    抽象是忽略一个主题中与当前目标无关的方面,把现实世界中的概念转换为对象,可以是表示数据的VO对象或抽象类,也可以是表示一类行为的接口.有利于从众多变化的状态中抽离出不变的东西.有利于使用继承来构造类的体系,实现多态,使用模板和工厂模式方法来实现对业务过程的抽象.抽象是概念建模和业务流程建模很重要的工具,是面向对象体系的基石,而不是一堆杂乱.混乱.重复.散沙般的.关系错综复杂的类. 二 继承    是一种连结类的层次模型,并且允许和鼓励类的重用,

PHP之面向对象篇(3)

这次接着上一篇来讲: 面向对象的三大特征,之前已经讲了1个了,现在讲后2个:封装.多态 1.什么是封装?和pulic类似的访问修饰符分别有什么作用? 所谓封装,就是类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行'信息隐藏'(优点). * 把对象的属性和行为结合成一个独立的相同单位,并尽可能隐藏对象的内部细节. 封装是面向对象的特征之一,是对象和类概念的主要特性. * 封装的原则在软件上的反应是: 要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对