javascript之prototype、__proto__和constructor

一、prototype原型

确切地说Javascript的“类”在严格意义上来讲并不能算真正的类,从其声明的对象到类(估切这么说)有这样一个关系:
Instance.__proto__=InstanceClass.prototype(ie不支持)

以上说明:实例的属性(__proto__)等于类的prototpye,我们可以看出,实例的"__proto__"正好巧接在类的"prototype"上,通过原型链(prototype)来查找其方法并扩展,我们会发现其方法(Method)与其属性(Property)都是Public(当然你也可以用Private,即不用this),而prototype其实就是一对象,用来记录方法做为一个集合
假设我们声明一个类A,可以如此 

function A(){ 
    this.className="ClassA"; //添加Public属性,正确来说类名应该是Private的 
} 
//添加一方法 
A.prototype.getClassName=function(){ 
    return this.className; //this指代A,而不是prototype 
} 
//声明一对象 
var AObj=new A(); 
alert(AObj.__proto__==A.prototype); //ie下无效,ff下为true,说明上面的验证是正确的 
//我们来看看对象属性 
/* 
由于用了this,className即为Public,即可以随意修改或读取 
如果要保护起来,就要用到Private,那么可以去掉其this前缀,做为保护 
读的时候用一公开方法,即prototype下的方法: 
A.prototype.getClassName=function(){ 
    return className; //行不通,不存在,className是undefined 
} 
在这儿也只能约定一下,给className加上this,不要去直接去访问。在这一点上,的确不如第二种方法,稍 
后会说明 
*/

关于"prototype"
由于Javascrīpt并没有在系统内部并未使用过“继承”(很大可能),所以class下的prototype得到的全是
顶层Object,后期在继承的时候,我们可以看到这样的一个式子:
child.prototype=new parent();
继承两字带引号的意思是说就算有继承也并非真正意义上的继承,也只是通过prototype巧接得到。
用实例扩展一个方法到类,这儿不得不提及__proto__这个属性

 

function abc(){ 
    var owner=this; 
    owner.k="pp"; 
    owner.abc=function(){ 
        //
    } 
} 
abc.prototype.def=function(){ 
    //
} 
var s=new abc(); 
for(var t in abc.prototype){ 
    alert("prototype指向:"+t+"="+abc.prototype[t]); 
} 
for(var t in s.__proto__){ 
    alert("__proto__指向:"+t+"="+s.__proto__[t]); 
}

 在ff下我看可以看到实例名.__proto__=类.prototype,现在通过实例扩展一个方法,这儿在实际应用当中并不推荐这样做,下例:
s.__proto__.hjk=function(){
return "hjk";
}
alert(s.hjk());
for(var t in abc.prototype){
alert("prototype指向:"+t+"="+abc.prototype[t]);
}
这下应该明白了吧。

 

引自:http://www.jb51.net/article/4318.htm

基于文件通信的QMT量化交易信号桥接方案设计与实现 在量化交易系统开发中,进程间通信(IPC)是连接不同计算模块、实现策略逻辑与交易执行解耦的关键技术。其核心原理在于允许运行于独立环境或进程的程序安全、可靠地交换数据。文件系统通信作为一种经典的IPC方法,因其实现简单、跨平台兼容性好且数据可持久化,在非高频场景下具有重要技术价值。它尤其适用于需要将外部复杂计算环境(如配备丰富数据科学库的Python环境)与专用交易终端(如迅投QMT)集成的应用场景。通过约定文件路径与数据格式,外部程序可将包含交易指令的JSON信号文件写入特定目录,而交易终端通过轮询或监听机 阅读详情

相关推荐

树莓派国内镜像源一键配置指南

本文提供树莓派国内镜像源一键配置指南,解决默认国外源访问缓慢问题。通过自动检测系统版本并支持清华、阿里云、中科大等主流镜像站选择,大幅提升软件更新与安装速度。包含详细的手动配置方法和常见问题排查,帮助用户快速完成树莓派换源优化。

tequila的博客 1373

详解prototype与__proto__区别

Each constructor is a function that has a property named “prototype” that is used to implement prototype-based inheritance and shared properties. Every object created by a constructor has an implicit r

李刚的学习专栏 3万+

Jitsi中的Prosody(谐音:破扫敌)介绍

凭借其灵活的插件系统、强大的安全性和出色的性能,Prosody 成为许多企业和开发者构建定制化通信解决方案的首选。在 Jitsi 的多方视频会议场景中,Prosody 不仅处理基本的信令任务,还需要与其他组件(如 Jitsi Videobridge)协作,确保视频流的正确分发和控制。Prosody 提供了丰富的插件系统,允许开发者通过模块扩展其功能。Prosody 就是一个实现 XMPP 协议的服务器,它支持 XMPP 协议的标准功能,如消息传递、群组聊天、传送状态信息等,并提供了高效、可扩展的服务。

江左散人的专栏 1165

Js中的prototype、__proto__和constructor

Js中的prototype、__proto__和constructor 前言:阅读此文,请先阅读(Js面向对象的三大特点) 访问对象中不存在的属性,不会报错,而是返回undefined; 强行给对象中不存在的属性或位置赋值也不会报错,而是自动在该位置添加新属性。 prototype 当定义用于实例化对象的构造函数时,会附赠一个空的原型对象:构造函数 . prototype指向的就是原型对象 原型对象中保存着所有子对象的共有属性和公共方法 向原型对象中添加公共属性和方法 i.找到当前构造函数的原型对象:

神奇的兔子 1337

域自适应的理解与想法(Domain Adaptation)

这幅图是域适应非常有名的一篇论文中的插图,被很多文章转载。 什么是领域自适应? Domain Adaptation是迁移学习中很重要的一部分内容,目的是把分布不同的源域和目标域的数据,映射到一个特征空间中,使其在该空间中的距离尽可能近。于是在特征空间中对source domain训练的目标函数,就可以迁移到target domain上,提高target domain上的准确率。 上面的图主要的思想来源于GAN,上图由三部分组成:特征映射网络 标签分类网络和和域判别网络 其中,source domain的数.

yuanxue18的博客 5981

内容创作全流程自动化:OpenClaw+大模型搞定选题+写稿+多平台发布

本文介绍了一套基于OpenClaw的全自动化内容创作流水线方案,帮助垂直领域创作者摆脱重复劳动。该方案将内容生产拆解为选题生成、内容撰写、格式适配、多平台发布四个模块,通过工作流引擎串联执行。系统能自动采集热榜生成选题、调用大模型撰写结构化内容、适配不同平台格式要求,并通过API+浏览器自动化实现多平台发布,全程只需人工最终审核。作者分享了各模块的实现细节,包括热榜采集、内容结构化生成、Markdown转换和发布策略,并提供了工作流编排方法。这套方案能为创作者每天节省约3小时,同时保证内容质量和发布效率。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 49

JavaScript中的__proto__、prototype和constructor的理解

1. __proto__ 首先来说一下__proto__属性,在js中除了null和undefine,其余的数据类型都有这个属性。它的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象里(p0)继续查找这个属性,如果在p0上也不存在这个属性,则会继续往p0对象的__proto__属性所指向的那个对象(p1)里找,如果仍然没有找到,则继...

aSmallProgrammer的博客 621

匹配博弈双边选择算法

刚学图论匹配方面的一些知识,记录下来。

ymengm的博客 2434

JS彻底弄懂原型prototype,__proto__和constructor

zzz1048506792的博客 350

安卓中蓝牙免提HFP的一些分析

最近看了一些大牛的博客,无不提到了技术分享的重要性,的确,分享自己的知识不仅仅是与他人讨论并相互提高的过程,更是对自己知识的梳理。希望自己能以此为契机,形成周期性博客分享的习惯。 文章标题为HFP的一些分析,HFP(Hand Free Profile)主要定义了安卓中与接打电话相关的一些功能的实现。本文主要介绍这其中对于HFP非常重要的Service Level Connection的建立。首先...

底层码农 770

Tesla v100 4张显卡组装机安装vllm和ollama在Ubuntu系统上的安装---AI大模型系统从零开始0032

本文提供Ubuntu22.04系统下vLLM的完整安装指南,适配4×32G Tesla显卡的单机4卡张量并行部署。教程包含:1)硬件要求(Ubuntu22.04、NVIDIA驱动≥535、CUDA12.1+);2)NVIDIA驱动自动安装方法;3)Python3.10虚拟环境配置;4)vLLM官方预编译包一键安装;5)单机4卡启动Qwen3.6-27B模型的完整参数说明(含FP8量化、多进程并行等关键配置)。文末附分布式部署的Ray集群方案参考链接,适用于多机8卡场景。

添柴程序猿的专栏 175

JS中的prototype,__proto__和constructor

function a(c){ this.b = c; this.d =function(){ alert(this.b); } } var obj = new a('test'); alert(obj.constructor);//function a(){} alert(a.prototype.constructor);//function a(){}

learninginJAVA的专栏 834

多组学联合高级Mantel-test热图

对应的是「metabo」中物质间的相关性热图,单元格色块颜色表示相关系数大小,橙色表示+相关,绿色表示-相关;单元格内的数值表示相关性值大小,星号表示显著性。双组学(微生物组/ 转录组/代谢组等两两组合)关联分析,可视化组学特征间的关联显著性、强度及相关方向。表示<trans>与<metabo>中物质的Mantel test结果。表示整体相关的系数,连线颜色表示相关系数的显著性检验结果。宿主-微生物互作、疾病多组学机制、环境-生物多组学关联。为物质名称,不允许存在空值、重复值。

多组・学・多组学 360

JS原型链中 _proto_和prototype及constructor的关系

总结: 1、对象有属性_proto_,指向prototype。a. 对象的_proto_指向其构造方法的原型对象。b. 原型对象的_proto_指向上一级原型对象。c. 2、方法除了有_proto_,还有属性prototype,指向该方法的原型对象。 3、每个对象都有constructor指针,a. 指向创建该对象实例的构造函数。b. 原型对象指向对应的构造函数

u010267996的博客 974

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JavaScript中__proto__、prototype和constructor的详细讲解【1】

作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们。可通过以下方式检测引擎是否支持__proto__属性: Object.getPrototypeOf({__proto__: null}) === null;//返回true表示支持,否则表...

chaopingyao的博客 522

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深入理解JS中的prototype、_proto_和constructor的三角关系

深入理解JS中的prototype、_proto_和constructor的三角关系 1.前言        作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们。这里说明一点,__proto__属性的两边是各由两个下划线构成(这里为了方便大家看清,在两下划线之间加入了一个空格:_ _proto_ _,读作“du

Kaite_han的博客 339

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Js的prototype、constructor和--proto--

constructor:始终指向当前对象的构造函数 prototype:函数的内置属性,一个函数指向一个对象,函数的原型对象 __proto__: 对象的内置属性,一个对象指向该对象的原型对象,作用是:该对象中没有的属性沿着原型链向原型对象中查找。 具体详解见博客:帮你彻底搞懂JS中的prototype、__proto__与constructor(图解) ...

喜东东的博客 261

JS-构造函数和原型(constructor、__proto__、prototype)

一、构造函数和原型 1、概述 在 ES6之前 ,对象不是基于类创建的,而是用一种称为构建函数的特殊函数来定义对象和它们的特征。 创建对象可以通过以下三种方式: 1. 对象字面量 2. new Object() 3. 自定义构造函数 2、构造函数 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。我 们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。 (1)在 JS 中,使用构造函数时要注意以下两点.

huohuoit的博客 985

JS 一张图理解prototype、proto和constructor的关系

转载于原文地址:https://www.cnblogs.com/xiaohuochai/p/5721552.html(感谢大神的总结) 前面的话   javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细解释...

weixin_30763455的博客 107

javascript中的__proto__, prototype和constructor

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数... 此外,JavaScript 允许自定义对象。 1》__proto__ javascript中一切都是对象,每个对象都是基于原型对象创建的,每个对象中都有__proto__属性,这个属性指向的就是它基于的原型对象。 __proto__属性是系统(浏览器)自动给创建的,在对象被创建的时候自动指向基于的原型对

kuangruike的博客 428

JS的prototype和__proto__、constructor

看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚, 明白了之后保存下整理下:   prototype: 是函数的一个属性(每个函数都有一个prototype属性)   __proto__: 是一个对象拥有的内置属性   (prototype是函数的内置属性,__proto__是对象的内置属性) 二、new 的过程 v...

weixin_30493321的博客 63

JavaScript中__proto__、prototype以及constructor的详细讲解【2】

初学JavaScript的时候也一样搞不清楚__proto__、prototype以及constructor三者之间的关系,于是经过多方查阅资料和请教前辈,今天写出来算是自己好好总结了一下。 一、知识储备 首先,要明确以下几点: 1、在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。 即:对象具有属性_...

chaopingyao的博客 193

Object.prototype.__proto__ 、Object.prototype和 Object.prototype.constructor

Object.prototype.__proto__:   实体对象指向造它的构造函数的 prototype属性所指 的对象 ,实例的__proto__是引用构造函数的prototype属性所指对象, Object.prototype:   js规定,构造函数有prototype 属性,指向一个对象,这个对象一般就是构造函数的公有成员。   所以__proto__ 和 pr...

dianfeie8077的博客 426

js - __proto__ 、 prototype和constructor

零.资料与前言 0x1 材料:   1.帮你彻底搞懂JS中的prototype、__proto__与constructor(图解) 0x2 前言   之前也尝试总结过 js 中的 __proto__ 、 prototype 以及原型链相关的资料(JS 中的原型 -- prototype、__proto__ 以及原型链),不过彼时受限于经验等因素,没有多少条理,同时也存在诸多的的疑...

318

一张图理解prototype、proto和constructor的三角关系

  javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细解释原型的三角关系 图示 概念   上图中的复杂关系,实际上来源就两行代码 function Foo(){}; var f1 = new...

beichen3997的博客 188

谈谈JavaScript的原型、原型链、构造函数、prototype、__proto__和constructor

原型、原型链、构造函数、prototype、__proto__、constructor是JavaScript比较难的知识点,但是它们又功能强大,是我们进行组件开发、模块开发必须掌握的技能,网上有很多相关博文,大家可以参阅。本文立求以简单的文字、代码谈谈prototype和__proto__关系,prototype和constructor关系,Function和Object的关系。

chuangxin的专栏 701
上一篇: JavaScript之call()和apply()
下一篇: dom4j解析xml-取消doctype中DTD验证设置
javaRwx
博客等级 码龄20年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值