js的Prototype属性详解

ES6语法:对象的新增方法——Object(__proto__属性,Object.setPrototypeOf(),Object.getPrototypeOf()) 本文是一篇关于ES6中对象的新增方法——Object的知识文章。主要内容为__proto__属性 Object.setPrototypeOf() ,Object.getPrototypeOf属性。在文章中会从理论和实践两个角度入手,代码片段可能比较多,需要耐心阅读。本文紧接ES6专栏ECMAScript(ES6)第五幕之【对象的新增方法——Object】(Object.getOwnPropertyDescriptors())中内容,进一步学习对象的新增方法。创作不易!多多关照!! 阅读详情

js的prototype 属性,w3c说:prototype 属性使您有能力向对象添加属性和方法。说的总是很模糊,网上找的大神的解释很详细。。。

avascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。

函数:原型

每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。

prototype的定义

你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。你可以看看下面的例子:

Example PT1

CODE:
function Test()
{
}
alert(Test.prototype); // 输出 "Object"

给prototype添加属性

就如你在上面所看到的,prototype是一个对象,因此,你能够给它添加属性。你添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。

例如,我下面有一个数据类型Fish,我想让所有的鱼都有这些属性:livesIn="water"和price=20;为了实现这个,我可以给构造函数Fish的prototype添加那些属性。

Example PT2

CODE:
function Fish(name,color)
{
this.name=name;
this.color=color;
}
Fish.prototype.livesIn="water";
Fish.prototype.price=20;

接下来让我们作几条鱼:

CODE:
var fish1=newFish("mackarel", "gray");
var fish2=new Fish("goldfish", "orange");
var fish3=new Fish("salmon", "white");

再来看看鱼都有哪些属性:

CODE:
for (int i=1;i<=3; i++)
{
var fish=eval_r("fish"+i);   //我只是取得指向这条鱼的指针
alert(fish.name+","+fish.color+","+fish.livesIn+","+fish.price);
}

输出应该是:

CODE:
"mackarel, gray, water,20"
"goldfish, orange, water, 20"
"salmon, white water, 20"

你看到所有的鱼都有属性livesIn和price,我们甚至都没有为每一条不同的鱼特别声明这些属性。这时因为当一个对象被创建时,这个构造函数将会把它的属性prototype赋给新对象的内部属性__proto__。这个__proto__被这个对象用来查找它的属性。

你也可以通过prototype来给所有对象添加共用的函数。这有一个好处:你不需要每次在构造一个对象的时候创建并初始化这个函数。为了解释这一点,让我们重新来看ExampleDT9并使用prototype来重写它:

用prototype给对象添加函数

Example PT3

CODE:

function Employee(name, salary)
{
this.name=name;               
this.salary=salary;
}
Employee.prototype.getSalary=function getSalaryFunction()
{
return this.salary;
}

Employee.prototype.addSalary=functionaddSalaryFunction(addition)
{
this.salary=this.salary+addition;
}

 

我们可以象通常那样创建对象:

CODE:
var boss1=newEmployee("Joan", 200000);
var boss2=new Employee("Kim", 100000);
var boss3=new Employee("Sam", 150000);

并验证它:

CODE:
alert(boss1.getSalary());  // 输出 200000
alert(boss2.getSalary());   // 输出100000
alert(boss3.getSalary());   // 输出150000

这里有一个图示来说明prototype是如何工作的。这个对象的每一个实例(boss1, boss2,boss3)都有一个内部属性叫做__proto__,这个属性指向了它的构造器(Employee)的属性prototype。当你执行getSalary或者addSalary的时候,这个对象会在它的__proto__找到并执行这个代码。注意这点:这里并没有代码的复制(和Example DT8的图表作一下对比)。

js的Prototype属性 <wbr>解释及常用方法
Javascript中prototype属性实现给内置对象添加新的方法 本文实例讲述了Javascript中prototype属性实现给内置对象添加新的方法。分享给大家供大家参考。具体实现方法如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>prototype属性使用(给内置对象添加新的方法,方便调用)</title> [removed] function getMaxFunc() { var max = 立即下载

相关推荐

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1877

javascript的原型

 函数:原型每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文)。这个属性非常有用:为一个特定类声明通用的变量或者函数。prototype的定义你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。你可以看看下面的例子:Example PT1CODE:function Test(){}alert(Test.prot

技术收藏 812

计算机保研/考研面试题——计算机组成原理篇

本文总结了985和华五学校习计算机保研/考研常问面试时的计算机组成原理题,欢迎点赞、收藏、评论、关注

安晴晚风的博客 7547

理解JavaScript中的原型链-Prototypes

源文章来源Prototypes in JavaScript 译者: Leeyw Prototypes in JavaScript JavaScript中的Prototypes When you define a function within JavaScript, it comes with a few pre-defined properties; one of thes...

weixin_42244691的博客 974

基于强化学习方法的PID参数整定

前言 PID控制器在工业界应用非常广泛,但是PID的参数调节一般需要人工根据经验法来试。对于有经验的工程师来说,一般试几次就可以获得满足调节的参数。然而对于新手工程师却很难确定一套比较好的参数。 这里我们采用强化学习的方法来调节PID参数。 这个例子展示了如何使用双延迟深度确定性策略梯度(TD3:twin-delayed deep deterministic policy gradient)强化学习算法来调整PI控制器。整定控制器的性能与使用Control System Tuner app整定的控制器的性能

weixin_42188287的博客 2万+

js prototype 添加属性和方法

假设现在有个字符串,即String 对象,var str="abcd";我们知道str.length 可以求出字符串的长度,这个length 就是String 的属性;str.split()  可以把我们上面的字符串分割成 ["a","b","c","d"] , split()就是String的方法;上面的属性和方法都是原来就定义好的,现在我们想添加自己的属性和方法,那就需要 prototype,...

cvper's world ! 1178

Python量化交易:主流回测框架Backtrader入门详解

Python量化交易框架Backtrader入门指南 Backtrader是一个功能强大的Python量化回测框架,可以帮助交易者专注于策略逻辑而非基础设施。本文介绍了Backtrader的核心架构和使用方法: 框架优势:自动处理订单执行、手续费、滑点、仓位管理等复杂问题,采用事件驱动模式接近真实交易场景。 核心组件: Cerebro:控制中心 Strategy:交易策略 Data Feed:数据输入 Broker:模拟经纪商 Indicators:技术指标 使用流程: 安装:pip install bac

Science prince的博客 935

js中利用prototype给类添加方法

1.如何定义一个简单的类? 以下是一个没有任何属性和方法的类的定义:function MyClass(){};你可能会想,这不就是个简单的函数声明?没错,这个函数就是一个类的定义的实现。如何使用这个类呢?看下面的代码:var cls1 = new MyClass();这样,利用new就可以生成MyClass的一个实例了。所以在js中可以说函数就是类,类就是函数。2.给类增加属性和方法functio

1万+

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

手把手教你完成YOLOv10 PySide6目标检测界面搭建,使用Qt6设计YOLOv10检测系统,前台系统+后台管理系统开发实战,可用于大论文凑工作量或毕设必备,全网最详细教程

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1733

LVGL 磁罗盘效果

环境:LVGL 9.x + SDL2,窗口 1280×800。界面文案用英文(默认 Montserrat,无 CJK)。本文按实现顺序讲:先建立两个耦合转动体,再把磁倾角误差从卡面倾斜里推出来,最后用同一套投影把刻度、数字和目标画到卡上。画面上的迟滞、涡流、摆动和读数偏差都来自方程,没有补间动画。

摸鱼专家 86

计算机ppt闪耀效果在哪里,ppt怎样制作文字闪烁效果

对于经常使用ppt的人来说,都知道怎样制作简单的文字闪烁动画效果,但对于初学者来说,可能就不知道怎样操作了,下面就让学习啦小编告诉你ppt怎样制作文字闪烁效果 的方法。ppt制作文字闪烁效果的方法1、在计算机桌面双击PowerPoint2010图标将其打开运行,在启动的PowerPoint2010演示文稿编辑软件窗口,依次点击“文件”-->“新建”-->“演示文稿”-->“创建”...

weixin_29276847的博客 2307

PCB高速信号换层孔新技术:VECS(Vertical Conductive Structure Technology)解析

摘要:垂直导电结构(VeCS)是一种新型PCB互连技术,由平板信号走线和椭圆形接地层构成半同轴结构,相比传统过孔具有显著优势。通过全波仿真和实测验证,VeCS展现出更好的阻抗连续性、更低的插入损耗和回波损耗,以及优异的串扰抑制能力。其椭圆形接地结构能有效隔离电磁干扰,在相同布线密度下远端串扰比传统过孔降低约50%。VeCS制备工艺与传统PCB工艺兼容,无需新增设备,且能实现更高密度互连。测试结果显示,2.5英寸带状线通道中VeCS结构的信号完整性表现明显优于传统过孔,为高速数字系统提供了更可靠的垂直互连解决

小孟同学的博客 200

linux echo 字体大小 背景 字体颜色 的编码

linux 终端颜色代码 echo -e "\033[背景;字体颜色m 字符串\033[0m" eg : echo -e "\033[30m 黑色字 \033[0m" 字体颜色(30-37) ------------------ 背景颜色(40-47) ------------------ 特色功能 ------------------ \33[0m 关...

qq_16827895的博客 1921

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

shell设置输出信息的颜色

脚本中设置颜色的方法 echo -e "\E [1 ; 31m红颜色 oldboy \E [0m" echo -e "\033 [1 ; 31m红颜色 oldboy \033 [0m" ① ② ③ ④ ⑤ ② ⑥ ① echo -e : 可以识别转义字符信息, 进行相应处理输出 ② \E \033 : 表示开启颜色标记功能, ...

热气球 1233

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux控制台颜色设置

Linux控制台终端的颜色可以使用“ANSI非常规字符序列”来生成。举例:   echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”。“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器。“\033”引导非常规字符序列。“m”意味着设

Alex2008vs 1814

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python控制台不同字体及背景的设置(简单)

为控制台设备不同字体和背景色:print (‘ \033[显示方式;前景色;背景色m’) print (’\033[1;35;44m-------------简易五子棋(控制台)------------------\033[0m’) 显示方式: 0 终端默认设置 1 高亮显示 4 使用下划线 5 闪烁 7 反白显示 8 不可见 前景色、背景色对应值: 颜色 ...

honeygirl_的博客 1921

javascript的prototype给对象增加方法属性

功能实现 第一步用prototype将方法增加给类对象 第二步this代替类对象 代码 无标题文档 var a=[1,2,3,6,7]; var x=a.getZuiDa(); var y=a.getZuiXiao(); alert(y); var s="---hello---"; var x=s.trim(); a

jingtianxiaozhi的专栏 818

JavaScript中的export和import

要使用一个JavaScript在文件中定义一个自定义对象。// 定义自定义对象age: 25,${this// 定义自定义对象 const myObject = {} };// 导出自定义对象 export default myObject;// 定义自定义对象 const myObject = {} };// 导出自定义对象 export default myObject;${this// 定义自定义对象 const myObject = {} };

小马甲 3990

14.函数的原型以及prototype属性和__proto__属性

1.每创建一个函数,解析器都会向函数中添加一个属性叫prototype,这个属性相当于一个指针,指向原型对象,而原型对象其实就是一个类似接口的东西,是该种类的祖宗类。 2.函数以普通形式调用原型对象没有任何作用,而倘若以构造函数的方式去调用对象,它所创建的对象都会有一个隐含的属性,该隐函属性也是指针,指向原型对象。 验证prototype属性和__proto__属性都指向的是对象 3.既然我们已经知道prototype和__proto__指向一个公共的原型...

qq_53630069的博客 346

Js如何利用prototype为类创建静态成员属性和方法

前言为类创建静态成员,是面向对象语言的特点,js是可以通过prototype来实现这一特点01具体代码如下所示// 用function 模拟一个类出来,同时也作为构造函数 functionMyClass() { this.name = "https://coder.itclan.cn"; // 类的成员变量name this.myStaticFun = myStaticFun; ...

itclanCoder 547

js通过prototype为对象注入属性

function Ck(name,age){ this.name =name; this.age =age; } //新增getName方法 Ck.prototype.getName=function(){ return this.name; } //新增getAge方法, Ck.prototype.getAge=function(){

  ~8挑、Mm的专栏 1034

element 往node里面增加属性值_【JavaScript 教程】DOM——Node 接口

作者 | 阮一峰所有 DOM 节点对象都继承了 Node 接口,拥有一些共同的属性和方法。这是 DOM 操作的基础。1、属性1.1、Node.prototype.nodeTypenodeType属性返回一个整数值,表示节点的类型。document.nodeType // 9上面代码中,文档节点的类型值为9。Node 对象定义了几个常量,对应这些类型值。document.nodeType ...

weixin_39830175的博客 646

js prototype 添加属性对象

在本例中,我们将展示如何使用 prototype 属性来向对象添加属性: <script type="text/javascript"> function employee(name,job,born) { this.name=name; this.job=job; this.born=born; } var bill=new employee("Bi...

weixin_30335353的博客 205

javascript通过原型添加属性和方法

使用prototype关键字和点标记法为构造器添加属性和方法 <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <script> function t...

hongxiao2016的博客 3744

JavaScript中的prototype如何实现共享方法,而不产生多个copy

在JavaScript中,prototype对象是实现面向对象的一个重要机制。所有function类型的对象都有一个prototype的属性。prototype提供了一个共享属性和方法的机制。以下这个例子仅仅展示了prototype是如何让不同对象共享这个SayHello函数的。 functionPerson(name){this.name=...

weixin_34044273的博客 220
上一篇: js的倒计时事件与倒计时小例子
下一篇: JS中的RegExp对象
weierbufan
博客等级 码龄14年 0粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值