prototype详解

react_prototype:使用 React 的 Web 应用程序原型 React原型 这是一个使用 React 的原型应用程序。 在这个原型中要实现的概念: 路由(历史 API) 阿贾克斯 jQuery ui 插件集成 测试(开玩笑) 服务器端渲染 (SSR) 完毕: 构建过程(gulp/grunt) 依赖项控制(浏览) 立即下载

Function的prototype 原型链 static详解

此前我有看过网上很多的关于该知识点的详解,很多文章都非常难懂,且篇幅较长,可能是以学习研究为目的。这篇文章结合了理论与实践,希望各位大佬多多批评!

基本介绍

有class类式声明 用于声明对象,在这里我更加偏向于用函数。

Function -> prototype(用于声明公共变量和方法) constructor(指向自身,了解即可);

fObj(函数new 出来的实例) -> __proto __ 或 [[prototype] ] (谷歌) (原型链,与原函数的prototype相等) constructor(原型链中的属性,指向原函数自身)

关于继承:react官网中阐述了继承与组合在框架当中的应用,组合会被使用的更多,所以暂不讨论extents继承。

图示如下

画的较丑^ _ ^
在这里插入图片描述

声明一个函数

函数原型相当于一个函数的公共空间,所有new出来的对象都可以使用空间中的属性和方法。实际是将公共方法进行整合,将全局变量变成方法局部变量,用于封装js插件。

//声明原型 
function FnC(x, y) {
	this.x = x; // this将来会指向 new出来的对象,这里声明原型变量
	this.y = y;
  //声明原型函数 方式1
	this.show1 = function() {
		console.log('show1:' + this.x + this.y);
	}
}
//声明原型函数 方式2
FnC.prototype.show2 = function(){
  	//TODO2
}

//声明静态方法 使用的时候可以直接通过方法名去调用
FnC.showS = function() {
	console.log('静态方法',this.x + this.y)
}
new 对象
//创建对象
let obj1 = new FnC('a', 'b');

//使用原型方法
obj1.show1();
obj1.show2();
obj1.__proto__.show2();
static

我的理解是,静态方法将是将一些附加旁类的行为挂钩到函数上,方便使用。例如:window对象上的location-document,Math系列的方法random、pow、max等。

//使用例文静态方法 通过函数名调用,切记不能用实例调用
FnC.showS();
扩展1

如何扩展或者在已创建的对象上,添加公共方法呢?对于一些封装好的库,最好不要去改变原文件。

//方式1 
//例如:给数组加上自定义的方法,数组对象即Array
Array.prototype.constom1 = function(){
  //TODO
}
//自定义函数
FnC.prototype.constom2 = function(){
  //TODO
}
//方式2 
let obj2 = new FnC('a', 'b'); //创建好了的对象
obj2.__proto__.constom3 = function(){
  //TODO
}

//原由:对象的原型链包含或相等于原函数的原型链。
console.log(FnC.prototype === obj1.__proto__); //true
console.log([1,2].__proto__ === ['sdosa'].__proto__); //true 对象的原型链属于同一公共函数的原型

这种方式将公用行为进行抽象共有,对与代码的重构非常有帮助。详见js的设计模式与开发实践一书。

扩展2

两种判断原型是否存在与原型链的方法

// 测试1  判断FnC的原型 是否存在于 obj的原型链中
console.log(FnC.prototype.isPrototypeOf(obj));   false | true

// 测试2  判断FnC的原型 是否存在于 obj的原型链中
console.log(obj instanceof FnC);  false | true

constructor指向问题

//函数自身的constructor  | new出来对象 __proto__的constructor 都是指向原函数
console.log('constructor',Fnc === FnC.prototype.constructor); //true
console.log('constructor2',FnC === obj.__proto__.constructor);  //true
Cesium+Three.js融合实战:从零构建GIS与BIM一体化大场景 本文详细介绍了Cesium与Three.js融合技术在GIS与BIM一体化大场景中的应用实践。通过坐标系转换、双引擎协同渲染等核心技术,实现宏观地理信息与微观建筑细节的完美结合,为智慧城市、数字孪生等项目提供高效解决方案。文章包含环境配置、性能优化等实战经验,助力开发者快速掌握三维可视化开发技巧。 阅读详情

相关推荐

OpenWrt南京电信PPPoE IPv6配置:从零搭建稳定双栈网络

本文详细指导如何在南京电信PPPoE宽带环境下,为OpenWrt路由器配置稳定的IPv6双栈网络。核心在于正确设置WAN6接口为DHCPv6客户端,并请求/60前缀,同时配置LAN口分发地址并放行防火墙关键流量,确保内网设备获得原生IPv6连接。

water的专栏 1340

prototype全解全析

prototype和原型链查找: 任何函数都有 prototype属性, prototype是英语“原型”的意思。prototype属性值是个对象,它默认拥有constructor属性指回函数。 举个栗子: function sum(a,b){ return a+b; } console.log(sum.prototype); // {constructor: ƒ} console.log(typeof sum.prot

qq_52207728的博客 1370

淘宝x-mini-wua生成机制与硬件信息关联性深度解析

本文深度解析了淘宝x-mini-wua的生成机制与硬件信息的关联性,详细介绍了其作为设备指纹令牌的核心作用及技术实现细节。通过分析基础硬件层、环境特征层和行为特征层的数据采集,揭示了淘宝如何利用AES加密和分级加密策略防止破解,并探讨了其安全防护与对抗策略。

weixin_29243279的博客 230

prototype详解及prototype、new之间的关系

1.prototype解释 在JavaScript中,prototype对象是实现面向对象的一个重要机制。 每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。 在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员

Turnhead的专栏 4216

抖音直播“卡黑屏”技术解析:从实现原理到平台风控与合规运营

在直播技术领域,视频流推送与实时互动是核心基础。其原理在于通过编码软件(如OBS)将音视频数据封装后,经由网络协议推送到服务器,再分发给观众。这项技术的价值在于支撑了实时、高并发的在线互动场景,是直播、在线会议等应用的基石。然而,在追求流量和互动的实践中,衍生出一些非常规操作,例如通过技术手段中断或控制视频流推送,仅保留音频和互动功能,以达到特定运营目的。这便涉及到了**卡黑屏**这一具体现象。它本质上是对直播流的人为干预,常与**流量博弈**和**风险规避**等动机相关联。从工程实践角度看,实现方式多样,

weixin_29895109的博客 1300

Anchor graph 对齐文献解读

Align then Fusion: Generalized Large-scale Multi-view Clustering with Anchor Matching Correspondences文献解读

atease0001的博客 1165

prototype原型

前端面试题什么是原型、原型链它们有什么特点它们能做什么怎么确定它们的关系。

weixin_52629158的博客 444

jenkins安装、打包、部署

一个可以让小白部署发布项目的软件;git 配置 一定要配置git的命令路径jenkins启动命令,一定要加这一段 -Dhudson.util.ProcessTree.disable=true一定要配置jenkins的节点,BUILD_ID和DONTKILLME 否则会导致打包后,会将运行的java程序进程也杀死创建任务SSH中执行服务器B的命令的时候,cd /opt;一定要cd 打开那个目录,否则文件无法传输过去。

学海无涯,我用JAVA 5217

深入理解prototype(原型对象)

对JavaScript中原型模式的理解一:什么是原型对象?有什么优点?    简单的来说,无论何时,我们创建的每一个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,这个对象包含了通过调用该构造函数所创建的对象共享的属性和方法。其实我们平常的叫法就是指:prototype就是通过该构造函数创建的某个实例的原型对象,但是其实prototype是每个构造函数的属性而已,只能说万物皆

flyingpig2016的博客 3万+

龙迅LT9611UXC芯片简介:Dual-Port MIPI DSI/CSI to HDMI2.0 with Audio

龙迅半导体推出的LT9611UXC是一款高性能MIPI转HDMI2.0转换器,支持DSI/CSI接口转换,兼容多种视频格式(RGB/YCbCr),最高支持4K@60Hz输出。该芯片集成音频处理(I2S/SPDIF)、色彩空间转换和3D功能,适用于机顶盒、电视盒子等消费电子及车载设备。提供工业级(-40℃~+85℃)和车规级(AEC-Q100认证)版本,采用QFN64封装。

MB16698594834的博客 1334

腾讯音乐 QQ音乐商业化客户端开发工程师:岗位深度解析与面试攻略

腾讯音乐QQ音乐商业化客户端开发工程师岗位要求3年以上Android开发经验,熟练掌握Kotlin/Java及跨端开发技术。核心职责包括QQ音乐客户端功能开发、架构优化、性能提升及技术攻关。岗位要求计算机相关本科以上学历,具备完整项目开发经验,熟悉TCP/IP等网络协议,能独立解决复杂技术问题。面试重点考察项目经验、架构设计、性能优化及新技术研究能力,建议候选人准备具体案例,量化成果,并熟悉Flutter等跨端技术。该职位强调技术深度与产品思维的结合,需展现扎实的编程基础、问题解决能力和团队协作精神。

郑伟强dev的专栏 366

react学习笔记

JSX简介 JSX,是一个 JavaScript 的语法扩展,也是react推荐的渲染语法。jsx有点类似一个模板语法,只是前后不需要通过双引号或者单引号来包含表达其为模板字符串,而是一个单个根标签对象的字符串,字符串中使用{}包括起来的内容会作为表达式在渲染时进行解析,比如如下element1和element2都是jsx对象,虽然这不是必须的,但是一般会在一个完整jsx表达式外部使用()包括起来...

weixin_44627989的博客 282

华为OD机试双机位A卷 - VLAN资源池 (C++ & Python & JAVA & JS & GO)

华为OD机试2025双机位A卷 VLAN资源池,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 879

【Vue】一一一一prototype详解

Vue.prototype详解地址

XiaoCoder的博客 552

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

详解prototype

什么是prototype   prototype属性是函数对象的子对象。函数是一个对象,它们对应的类就是function,每个函数对象都具有一个子对象prototype。 prototype包含特定类型的所有实例共享的属性和方法。对普通函数来说这个属性没什么用,只有在构造函数创建实例的时候该属性有用。当通过new来生成一个类的对象时,prototype对象的属性就会成为实例化对象的属性。 ...

qq_36470686的博客 1046

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

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

JavaScript prototype详解

用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法

小平果的欢乐谷 2888

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringBoot当中的Singleton和Prototype详解

对于注入的类,如果它们被配置为Singleton作用域(这是默认的作用域),那么无论你如何多次调用该类的方法,Spring容器只会创建一个实例,并在所有需要的地方共享这个单例实例。例如,如果你在一个配置类的方法上使用@Scope(“request”),那么每当一个新的HTTP请求到达时,Spring会为这个方法创建一个新的代理对象,并在这个请求的范围内共享这个对象。对于局部变量(在方法内部定义的变量),它们只在该方法的上下文中存在,修改局部变量的值不会影响到其他方法或实例中的变量。

程序员猫爪 2914

js中prototype详解

先看下面一段代码: function Machine(ecode, horsepower) { this.ecode = ecode; this.horsepower = horsepower; } function showme() { alert(this.name + " " + this.ecode + " ...

ding0702的专栏 235

Prototype库详解

1.Prototype库只是一个JavaScript函数库,它提供了大量工具方法来简化DOM操作,还扩展了Array、String等内建类,并新增了一些类、对象。Prototype共4000多行,主要功能分为三个部分: 简单、易用的工具函数 扩展了一些原有类,增加了一些自定义的对象 简化了Ajax开发的相关类 引入一个JavaScript函数库 <script type="text...

allenhulove的博客 1049

JS中prototype详解

JS中的prototype是JS中比较难理解的一个部分   本文基于下面几个知识点:   1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。   2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子: f

kobetmacone的专栏 523

javascript 之prototype详解

摘要 本系列博文主要谈一些在 javascript 使用中经常会混淆的高级应用,包括: prototype, closure, scope, this关键字. 对于一个需要提高自己javascript水平的程序员,这些都是必须要掌握的. 本节主要介绍prototype. Contents 摘要起由prototype结论参考资料本文的rst源码 起由 最近在做

Skyline 567

JavaScript Prototype 详解

本文里讲述的是关于JavaScript的prototype问题,至于具体的JavaScript面向对象的编程教程,请各位看客到其他网站搜索一下,或者到这里看看。 首先开始一个例子,如下: function A() { this.t1 = "ffffff

Day And Night 684

javascript prototype 详解

声明本文转载来自:http://blog.youkuaiyun.com/chaojie2009/article/details/6719353  JavaScript是基于对象的,任何元素都可以看成对象。然而,类型和对象是不同的。本文中,我们除了讨论类型和对象的一些特点之外,更重要的是研究如何写出好的并且利于重用的类型。毕竟,JavaScript这种流行的脚本语言如果能够进行良好的封装,并形成一个庞大的类型

wo1aijava的专栏 718

prototype的应用详解

详细介绍介绍脚本类库prototype的各种用法,让你快速掌握!

java_sick的专栏 352
上一篇: 浏览器缓存机制(HTTP缓存)
下一篇: 数组对象深拷贝
知夏__
博客等级 码龄5年 94粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值