前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Javascript类函数中prototype与this的区别

Javascript类函数中prototype与this的区别

作者头像
用户2936342
发布于 2018-08-27 07:26:23
发布于 2018-08-27 07:26:23
94200
代码可运行
举报
文章被收录于专栏:nummynummy
运行总次数:0
代码可运行

在Javascript面向对象编程中,定义实例方法主要有两种:

  • 通过this变量定义
  • 通过prototype定义
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function Student(name){
    var name = name;
    function privateFunc(){
        console.log("This is a private fucntion");
    }
    this.showName = function(){
        privateFunc();
        console.log(name);
    }
    
}
Student.prototype.protoFunction = function(){
        //console.log(name);
        privateFunc();
}

var stu = new Student("Jim")
stu.showName();
stu.protoFunction();

通过this与prototype定义的方法有什么区别呢? 运行以上代码可以发现,showName方法可以访问类函数中的定义的变量与方法,而protoFunction只能访问showName方法。 如果将protoFunctionin定义在构造函数内部,就可以访问这些属性和方法了。但作为实例函数,如果定义在构造函数内部,每次实例化都要执行,显然在浪费内存,也不合理。 有些资料上把this.showName这类方法叫做特权方法,主要是为了访问内部的私有字段,这样就可以控制对某些字段的访问。 而protoFunction这类方法相当于类的实例方法,但能访问这些特权方法,间接访问私有字段。

结论: 如果要直接访问私有字段,应该使用特权方法,也就是this定义的方法,应该定义在构造函数内部。相反,如果不需要直接访问私有字段,应该使用prototype定义的方法,而且应该定义在构造函数外部。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.04.17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
10个常用的eyoucms易优CMS标签(织梦CMS迁移可用)
最近一个月时间我们不少的朋友都在忙着将织梦CMS迁移到其他免费或者便宜的CMS程序中。其中我们有些朋友会迁移到标签相似的易优CMS,但是标签还是有区别的。我们在迁移程序后需要将原有的模板主题换成新程序的标签,当然对应的模板名称也是需要更换的。
老蒋
2021/12/22
3.2K0
整理的dedecms标签大全,方便查找
  平时用dedecms开发经常会用到一些标签,特别是首页、栏目页、内容页,这些页面都会用到标签的调用,比如title、keywords、description、arclist、field.body等,为了方便查找,ytkah特地整理了dedecms标签,大家可以用ctrl+F实现搜索。调用标签时一定要保证标签的完整性,曾经因为{dede:field.description /}少了一个“/”查了大半天,泪的教训。 dedecms首页标签 网站名称:{dede:global.cfg_webname/} 网站
ytkah
2018/03/06
9.3K0
DEDECMS仿站常用模板标签记录 DEDECMS主题模板必备
DEDECMS织梦CMS程序如今官方也不在更新,但是还是有很多人使用。这款内容管理系统的CMS程序曾经确实是非常的火热,基本上企业网站、内容类的网站都会使用这款程序,在于这款程序的结构非常的简单。但是也有一些缺点,比如经常有漏洞,但是如果取消交互功能还是比较安全的。
老蒋
2021/12/27
27K0
【DEDE】织梦网站[首页]常用的调用
DEDE织梦cms常用的参数标签调用汇总,以下龙腾飞网络科技-小吴实操中笔记记录,网站修改常用参数进行操作,保存使用非常方便:
攻城狮与产品喵
2025/03/13
2980
【DEDE】织梦网站[首页]常用的调用
dedecms织梦系统_dede模板站
模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析:
全栈程序员站长
2022/09/20
41.4K0
【DEDE】织梦网站[频道页、列表页]常用的调用代码
DEDE织梦cms常用的参数标签调用汇总,以下龙腾飞网络科技-小吴实操中笔记记录,网站修改常用参数进行操作,保存使用非常方便:
攻城狮与产品喵
2025/03/13
1470
【DEDE】织梦网站[频道页、列表页]常用的调用代码
DEDECMS调用任意栏目到首页的方法
1、按照网站构思,将网站栏目添加并确认完毕。如栏目有所改动,被改动的原有ID号随之消失,取而代之的是新的ID号(不管是几级栏目均如此)。
用户8851537
2021/07/21
11.6K0
DedeCMS让channelartlist支持currentstyle属性
织梦一二级导航菜单被点击顶级栏目高亮(加class)解决方法,DedeCMS让channelartlist支持currentstyle属性。
用户1088318
2025/05/21
310
DedeCMS让channelartlist支持currentstyle属性
织梦手机版各类标签集合
文章时间:2019年5月22日 21:47:46 解决问题:针对织梦手机版的各种可用标签,请直接页面CTRL+F进行搜索 #二级导航栏调用示例 {dede:channelartlist row='10' typeid='top' currentstyle="<li class='on'><a href='~typelink~'>~typename~</a></li>"} <li> <h3><a href='list.ph
华创信息技术
2019/11/08
2K0
currentstyle 织梦_dede currentstyle属性完美解决方案
问题一、dede让channelartlist标签支持currentstyle属性 完美解决
全栈程序员站长
2022/08/02
1.3K0
【DEDE列表】dede织梦调用栏目、栏目内容代码
DEDE织梦cms常用的参数标签汇总、以及操作过程中的一些bug问题解决方法,dede网站二开,以下龙腾飞网络科技-小吴在建站实操中笔记记录,织梦dede建站教程保存使用非常方便:
攻城狮与产品喵
2025/03/13
5110
【DEDE列表】dede织梦调用栏目、栏目内容代码
Dedecms普通模型入门教程
1. 默认模板设置 里面是default后面变量名字是cfg_df_style(在模版中使用方法是{dede:golbal.cfg_df_style/}获取的路径是templets/设定的文件夹名字,不过实际页面上调用的时候大部分都是使用的{dede:global.cfg_templets_skin/}) 例子:把参数值设置成html(注意路径一定要在templets文件夹下,区分开系统默认的模板) html里面有你要用的css在html/style/css/css.css,这样你在模板里面使用css就
苦咖啡
2018/05/07
6.7K0
dedecms提取某栏目及子栏目名称到首页怎么弄
  我们建网站时有不同的需求,例如为页面创建一个栏目导航,用dedecms如何提取某栏目及子栏目名称和链接呢?如下图所示,先列出指定的顶级栏目,在下方再列出此栏目的所有子栏目。   之前ytkah说过
ytkah
2018/03/06
8.3K0
dedecms提取某栏目及子栏目名称到首页怎么弄
织梦DEDECMS仿站模板必备标签 - list_article.htm列表模板
前面老蒋有整理到dedecms织梦程序首页模板常用的调用标签,在这里我们继续列表模板使用的标签。一般我们列表模板用于栏目所有文章或者子栏目的列表中使用的。其实我们可以设置多个栏目列表模板,只要我们在分类给不同的分类设置不同的列表模板都可以。
老蒋
2021/12/27
13.3K0
dede 让 channelartlist 标签支持 currentstyle 属性 完美解决
$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
Savalone
2020/02/11
1.4K0
梦dede导航 currentstyle 点击li添加class类 样式
<!--米米素材网导航开始--> <div class="global_nav_wrap"> <ul class="nav nav-pills"> <li{dede:field name=typeid
用户9841292
2022/07/09
1.2K0
dedecms如何调用当前栏目的子栏目及子栏目文章
  前面ytkah谈到了 dedecms调用当前栏目的子栏目怎么操作,有的朋友会问如果再增加一个调用子栏目文章的需求,即调用当前栏目的子栏目及子栏目文章,这个有办法实现吗?这时就要涉及到另外两个标签的调用了,dede:channelartlist标签和dede:arclist标签 <div> {dede:channelartlist} <dl> <dt><strong><a href="{dede:field name='typeurl'/}">{dede:field nam
ytkah
2018/03/06
10.3K0
currentstyle 织梦_织梦channel标签currentstyle样式无效不起作用
我们在用织梦系统制作网站时,经常会用到channel标签来调子栏目。但是,很多朋友会遇到这种情况在使用channel标签来调子栏目的时候,指定 “type=son typeid=x” 发现currentstyle无效。今天笔者就跟大家分享一下解决方法。
全栈程序员站长
2022/09/14
6.8K0
JEECMS v6版标签
S:截取字符串长度 len:保留字符的长度 append:保留字段以后的追加字符以。。。。显示 作用:截取过长的字符串,如标题标题太长了可以。。。。表示 具体例子: [@cms_content_list channelId='60' count='5' titLen='20' append='...' channelOption='1' dateFormat='yyyy-MM-dd'] [#list tag_list as a] <li><a href="${a.url}" target=_blank>[@text_cut s=a.title len=titLenappend=append/]</a></li> [/#list] [/@cms_content_list] JEECMS v6版标签之[@cms_friendink_list] 标签介绍 参数详解 ctgId:链接类别 siteId:站点ID enabled enabled:是否显示 作用:显示友情链接 文字链接 [@cms_friendlink_list ctgId='1'] [#list tag_list as link] <div style="margin-left:1.5%; float:left;"> <a href="${link.domain}" οnclick="$.get('${base}/friendlink_view.jspx?id=${link.id}')"target="_blank">${link.name}</a> </div> [/#list] [/@cms_friendlink_list] 图片链接 [@cms_friendlink_list ctgId='2'] [#list tag_list as link] <li><a href="${link.domain}" target="_blank" οnclick="$.get('${base}/friendlink_view.jspx?id=${link.id}')"> <imgsrc="${link.logo!site.defImg}" alt="${link.name}"/> </a></li>[/#list] [/@cms_friendlink_list] JEECMS v6版标签之[@cms_Tag_list] 参数详解 count:显示个数 作用:显示tag列表 具体例子: <div align="center" style="font-size:20px;color:red"> 热门tags: [@cms_tag_list count='8'] [#list tag_list as tag]<a href="${base}/tag/${tag.id}.jspx" target="_blank">${tag.name}</a>[#if tag_has_next]|[/#if][/#list] [/@cms_tag_list] <div> JEECMS v6版标签之[@cms_lucene_page] 搜索结果分页标签 参数详解 q: 搜索关键字 siteId:站点ID channeled:栏目ID startDate::开始时间 endDate:结束时间 作用:对搜索结果分页 具体例子: <div class="w96" style="min-height:500px;"> [#if q??] [@cms_lucene_page q=q channelId=channelId descLen='100' append='...' count='4' sysPage='1' ] <div class="search_msg"> 您搜索的<span class="red">“${q!}”</span>,共有<span class="red">${tag_list?size} 条</span>查询结果,[@process_time/] </div> [#list tag_list as s] <dl class="list3"> <dt><span>[<a href="${s.ctgUrl}" target="_blank">${s.ctgName}</a>]</span> <a href="${s.url}" title="${s.title}" target="_blank">${s.title}</a></dt> <dd class=
六月的雨在Tencent
2024/03/28
1370
四个方法实现DEDECMS子栏目获取顶级栏目名称
我们有些时候在设计和调用DEDECMS栏目的时候,需要在子栏目中获取顶级栏目的名称。这样应该如何调用设置呢?这里老蒋找到几个有效的办法,如果有需要的话可以参考使用。
老蒋
2021/12/27
7.5K0
推荐阅读
相关推荐
10个常用的eyoucms易优CMS标签(织梦CMS迁移可用)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验