js中的prototype有什么作用?[通俗易懂]

js中的prototype有什么作用?[通俗易懂]1、prototype对象是实现面向对象的一个重要机制。每个函数也是一个对象,它们对应的类就是function,每个函数对象都具有一个子对象prototype。Prototype表示了该函数的原型,prototype表示了一个类的属性的集合。当通过new来生成一个类的对象时,prototype对象的属性就会成为实例化对象的属性。下面以一个例子来介绍prototype的应用,代码如下:123456…

大家好,又见面了,我是你们的朋友全栈君。

1、

prototype对象是实现面向对象的一个重要机制。每个函数也是一个对象,它们对应的类就是

function,每个函数对象都具有一个子对象prototype。Prototype 表示了该函数的原型,

prototype表示了一个类的属性的集合。当通过new来生成一个类的对象时,prototype对象的属

性就会成为实例化对象的属性。

下面以一个例子来介绍prototype的应用,代码如下:

1
2
3
4
5
6
7
8
9
10
11
<script language=
"javascript"
>
//定义一个空类
function 
HelloClass(){
}
//对类的prototype对象进行修改,增加方法method
HelloClass.prototype.method=
function
(){
alert(
"prototype测试"
);
}
var 
obj=
new 
HelloClass(); 
//创建类HelloClass的实例
obj.method(); 
//调用obj的method方法
</script>

当用new创建一个对象时,prototype对象的属性将自动赋给所创建的对象,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
<script language=
"javascript"
>
//定义一个只有一个属性的类
function 
HelloClass(){
this
.name=
"javakc"
;
}
//使用函数的prototype属性给类定义新属性
HelloClass.prototype.showName=
function
(){
alert(
this
.name);
}
var 
obj=
new 
HelloClass(); 
//创建类HelloClass的一个实例
//调用通过prototype原型对象定义的showName方法
obj.showName();
</script>

56

2、利用prototype实现继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script language=
"javascript"
>
function 
HelloClass(){
//构造方法
}
function 
HelloSubClass(){
//构造方法
}
HelloSubClass.prototype=HelloClass.prototype;
HelloSubClass.prototype.Propertys=
"name"
;
HelloSubClass.prototype.subMethods=
function
(){
//方法实现代码
alert(
"in Methods"
);
}
var 
obj=
new 
HelloSubClass();
obj.subMethods();
</script>

在以上的代码中,首先是HelloSubClass具有了和HelloClass一样的prototype,如果不考

虑构造方法,则两个类是等价的。随后,又通过prototype给HelloSubClass赋予了额外的属性和方法

所以HelloSubClass是在HelloClass的基础上增加了新的属性和方法,从而实现了类的继承。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163410.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle基本面试题_mongodb面试题

    oracle基本面试题_mongodb面试题1.Oracle跟SQLServer2005的区别?宏观上:1).最大的区别在于平台,oracle可以运行在不同的平台上,sqlserver只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sqlserver的稳定性和安全性2).oracle使用的脚本语言为PL-SQL,而sqlserver使用的脚本为T-SQL微观上:从数据类型,数据库…

    2022年8月29日
    1
  • vue富文本编辑器插件推荐_elementui富文本编辑器

    vue富文本编辑器插件推荐_elementui富文本编辑器富文本编辑器官网http://tinymce.ax-z.cn安装npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S下载语言包语言包下载完之后在项目里新建public文件夹1)在public目录下新建tinymce文件夹,并将下载的语言包解压到该目录下2)在node_modules里面找到tinymce,将skins目录复制到public/tinymce里面<template><divclass

    2022年10月15日
    0
  • 使用 Intel HAXM 为 Android 模拟器加速,媲美真机

    使用 Intel HAXM 为 Android 模拟器加速,媲美真机

    2021年8月21日
    109
  • 深入解析HashMap和currentHashMap源码以及实现原理「建议收藏」

    深入解析HashMap和currentHashMap源码以及实现原理「建议收藏」深入解析HashMap和ConcurrentHashMapy源码以及底层原理前言HashMap和ConcurrentHashMap,这两个相信大家都不陌生,在面试中基本上是必问的,以及在实际开发过程中也是比用的,那么看了这篇文章,无论在面试还是在实际开发中都可以顺手拈来,得心应手了。HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并

    2022年6月18日
    38
  • linux下 VSCode快捷键

    linux下 VSCode快捷键文章目录一、常用二、全部1、常规2、基本编辑3、richlanguagesediting4、多光标和选择5、显示6、搜索与替换7、导航8、编辑页面管理9、文件管理10、终端一、常用命令作用Ctrl+,用户设置Alt+↑/↓将当前行上移或下移Ctrl+Shift+K删除行Ctrl+Shift+\跳至相匹配的括号处Ctrl+Shift+[/Ctrl+Shift+]折叠/展开当前代码块Ctrl+KCtrl+0折叠所有代码块Ctrl+

    2022年4月30日
    87
  • 浏览器主页被劫持成360导航.每次打开都是360导航https://hao.360.cn/?src=lm&ls=n36a7f6a197

    浏览器主页被劫持成360导航.每次打开都是360导航https://hao.360.cn/?src=lm&ls=n36a7f6a197这里有个误区:(本人亲测有效)大家都以为是篡改了主页,其实你去IE的设置里去看,主页没变化,或者说已经被锁定不能修改了。问题出在启动项的参数上—你试试在桌面IE的图标点击属性,看目标下边,正常的只有EXE文件的路径,但是很可能你的EXE文件路径后边跟上了一串网址字符,我的就是这样:"C:\ProgramFiles\InternetExplorer\iexplore.exe" htt…

    2022年7月14日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号