JS中的prototype

Ubuntu 22.04/20.04安装MATLAB 2022b/2021b Introduction MATLAB是一款美国MathWorks公司出品的商业数学软件。MATLAB是矩阵实验室(Matrix Laboratory)的简称。MATLAB用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB目前只有英语和日语版,不提供中文版。MathWorks公司在每年的上半年3月份左右发布a... 阅读详情

JS中的phototype是JS中比较难理解的一个部分

 

本文基于下面几个知识点:

 

1 原型法设计模式

在.Net中可以使用clone()来实现原型法

原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。

 

2 javascript的方法可以分为三类:

a 类方法

b 对象方法

c 原型方法

例子:

复制代码
function  People(name)
{
this .name = name;
// 对象方法
this .Introduce = function (){
alert(
" My name is  " + this .name);
}
}
// 类方法
People.Run = function (){
alert(
" I can run " );
}
// 原型方法
People.prototype.IntroduceChinese = function (){
alert(
" 我的名字是 " + this .name);
}

 

// 测试

var  p1 = new  People( " Windking " );

p1.Introduce();

People.Run();

p1.IntroduceChinese();
复制代码

 

3 obj1.func.call(obj)方法

意思是将obj看成obj1,调用func方法

 

 

好了,下面一个一个问题解决:

 

prototype是什么含义?

 

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

A.prototype = new B();

理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。

 

先看一个实验的例子:


复制代码
function  baseClass()
{

this .showMsg  =   function ()
{
     alert(
" baseClass::showMsg " );   
}

}

function  extendClass()
{

}

extendClass.prototype 
=   new  baseClass();

var instance 
=   new  extendClass();

instance.showMsg(); 
//  显示baseClass::showMsg
复制代码

我们首先定义了baseClass类,然后我们要定义extentClass,但是我们打算以baseClass的一个实例为原型,来克隆的extendClass也同时包含showMsg这个对象方法。

extendClass.prototype = new baseClass()就可以阅读为:extendClass是以baseClass的一个实例为原型克隆创建的。

 

那么就会有一个问题,如果extendClass中本身包含有一个与baseClass的方法同名的方法会怎么样?

下面是扩展实验2:


复制代码
function  baseClass()
{
    
this .showMsg  =   function ()
    {
        alert(
" baseClass::showMsg " );   
    }
}

function  extendClass()
{
    
this .showMsg  = function  ()
    {
        alert(
" extendClass::showMsg " );
    }
}

extendClass.prototype 
=   new  baseClass();
var instance 
=   new  extendClass();

instance.showMsg();
// 显示extendClass::showMsg
复制代码

 

实验证明:函数运行时会先去本体的函数中去找,如果找到则运行,找不到则去prototype中寻找函数。或者可以理解为prototype不会克隆同名函数。

 

那么又会有一个新的问题:

如果我想使用extendClass的一个实例instance调用baseClass的对象方法showMsg怎么办?

 

答案是可以使用call:


extendClass.prototype  =   new  baseClass();
var instance 
=   new  extendClass();


var  baseinstance  =   new  baseClass();
baseinstance.showMsg.call(instance);
// 显示baseClass::showMsg

 

这里的baseinstance.showMsg.call(instance);阅读为“将instance当做baseinstance来调用,调用它的对象方法showMsg”

好了,这里可能有人会问,为什么不用baseClass.showMsg.call(instance);

这就是对象方法和类方法的区别,我们想调用的是baseClass的对象方法

 

最后,下面这个代码如果理解清晰,那么这篇文章说的就已经理解了:

 


复制代码
< script type = " text/javascript " >

function  baseClass()
{
    
this .showMsg  =   function ()
    {
        alert(
" baseClass::showMsg " );   
    }
   
    
this .baseShowMsg  =   function ()
    {
        alert(
" baseClass::baseShowMsg " );
    }
}
baseClass.showMsg 
=   function ()
{
    alert(
" baseClass::showMsg static " );
}

function  extendClass()
{
    
this .showMsg  = function  ()
    {
        alert(
" extendClass::showMsg " );
    }
}
extendClass.showMsg 
=   function ()
{
    alert(
" extendClass::showMsg static " )
}

extendClass.prototype 
=   new  baseClass();
var instance 
=   new  extendClass();

instance.showMsg(); 
// 显示extendClass::showMsg
instance.baseShowMsg();  // 显示baseClass::baseShowMsg
instance.showMsg();  // 显示extendClass::showMsg

baseClass.showMsg.call(instance);
// 显示baseClass::showMsg static

var  baseinstance  =   new  baseClass();
baseinstance.showMsg.call(instance);
// 显示baseClass::showMsg

< / script>
在 Ubuntu 20.04 上静默安装matlab 实践 当在 dockerfile 使用 apt 的时候,如果出问题,可以考虑设置如下环境变量。该环境变量有很多值,请自行 baidu。如果要图形化安装(使用 matlab 的安装 GUI 引导)。最好是注销当前账户,然后使用 root 登录系统。使用 ubuntu:20.04 作为基础镜像,在容器中安装 matlab。如果是使用如下方式安装,会出现 GUI 看不到的情况。怀疑是此时的 X11 转发不能和当前账户共用导致。目的:加快实验速度,同时作为后续部署的基础镜像。工具混淆后部署到服务端。 阅读详情

相关推荐

ubuntu20.04 安装 matlab R2023b

但有点不一样:我现在matlab官网上下载的linux版本不是iso镜像文件,直接是一个zip压缩文件,不用什么挂载了。直接解压缩,然后在运行install文件。目前没碰到问题,在软件中找到matlab图标,点击就能运行,很方便。以后遇到matlab,不用再回到windows了~闲着没事,想在ubuntu上安装matlab。我选了否,如果以后出问题,来这里排查。这篇博客给出了解决办法。也不会出现上述报错了。

Debug的魔法小马的Debug博客 4581

原型链继承深入理解;new操作符理解;(转载)

本文转自:https://www.css88.com/archives/10022 ;(强烈建议看链接页面的!) 主要为了方便自己查看! 引言:如果不处理对象,您就无法在 JavaScript 方面取得很大进展。它们几乎是 JavaScript 编程语言的所有方面的基础。在这篇文章中,您将了解用于实例化新对象的各种模式,在此过程中,您将逐步深入了解 JavaScript 的原型。 基础入门 ...

鲁宽宽的博客 537

node.js中看javascript的prototype

编写node.js的代码时常常写Comment.prototype.save=function(callback){....},这个的意义是是什么,这里总结一下!!

huangleijay的专栏 1779

JavaScript prototype(原型对象)

JavaScript 的原型(prototype)是 JavaScript 中的一个重要概念。它是一种特殊类型的对象,每个 JavaScript 对象都有一个原型对象。原型对象在 JavaScript 中起着非常重要的作用。本文将详细介绍 JavaScript 原型对象的作用和在实际工作中的用途。

笔记 2216

自动化专业与嵌入式

在学生时期,我是一个典型的学渣,所以只能选择电气工程、汽修、数控之类的专业。而那些高分的则可以选择计算机,电子商务,通信之类的。这些专业看起来像是蓝领和白领的分界,至今我都觉得这种制度是不人性化的。专业这块根据学生的爱好去选择是最好的,毕竟有兴趣才会”真心”去学习。谁说学渣就学不会编程、学不会金融对吧?不过也罢,在学校能学到东西的毕竟是少数,最近有些大学生发了他们的课程表给我看了下。我感觉学的太广了,什么单片机、c语言、java之类的,导致很多学生学完以后还是很迷茫,不知道自己专业到底是从事什么方向的。所以

m0_71017841的博客 3588

Q&A | ZStack替代VMware实问实答

ZStack替代VMware实问实答

zstack_org的博客 1801

prototype.js-JavaScript包开发笔记

1. Prototype是什么?或许你还没有用过它, prototype.js(立即下载) 是一个由Sam Stephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端, 高交互性WEB应用程序的重担。轻松加入Web 2.0特性。如果你最近体验了这个程序包,你很可能会发现文档并不是它的强项之一。像所有在我之前

baggio785的专栏 2562

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 285

JS中prototype介绍

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

你就是我的世界 3万+

Windows 2008 R2虚拟机跑金蝶K3 WISE 12.1的5个关键配置细节(附避坑清单)

本文详细介绍了在Windows Server 2008 R2虚拟机中部署金蝶K3 WISE 12.1的5个关键配置细节,包括服务器角色与账户权限、组件服务调优、数据库与中间层协同部署、补丁管理策略及性能优化工具。这些实战经验可帮助企业IT团队避免常见陷阱,确保ERP系统稳定运行。

weixin_30847939的博客 318

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 449

prototype.js---超强的javascript类库

prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。prototype.js不仅是一个有很大实用价值的js库,而且有很高的学习价值。-----------------摘自谭振林(THIN)的prototype.js 1.4版开发者手册。今天才刚刚知道prototy...

deform0032的博客 341

LeRobot 入门教程(一)软件环境、部署流程及摄像头配置

🤖 LeRobot:开源机器人学习平台 摘要:LeRobot是一个基于PyTorch的开源机器人学习平台,提供模型、数据集和工具,旨在降低机器人技术门槛。平台包含经过验证的模仿学习和强化学习方法,并提供预训练模型、人类演示数据集及模拟环境。安装需从源码获取,支持Python 3.10环境,可选扩展包括仿真环境(如gym-aloha)、电机控制(Dynamixel/Feetech SDK)和实验跟踪(Weights & Biases)。该平台托管在HuggingFace,并设有社区Discord频道

2506_90492529的博客 3417

javascript-js 的prototype原型理解讲解

起初接触到这个prototype我是拒绝的,我还是花了一部分时间来理解这个东西,算不上精通,有什么问题回复在下面毕竟我是板砖挨惯了(滑稽);在我理解看来,prototype不外乎就两个基础的作用: 1.动态的添加类的属性和方法 2.复制原类的内容我们先来看第一个: 首先来定义一个简单的Person类;var Person = function(name,age){ //指定该类的属性为

小辣抓 905

在 ABAP Cloud 里优雅地调用 HTTP 服务:新一代 HTTP Client 全面实践与落地指南

摘要: 随着ABAP Cloud时代的到来,HTTP通信在SAP系统集成中的角色日益重要。传统CL_HTTP_CLIENT存在维护成本高、边界模糊等问题,而新一代ABAP HTTP Client采用Destination驱动的调用方式,通过CL_HTTP_DESTINATION_PROVIDER支持四种创建方式(URL、通信安排、BTP Destination服务、SM59连接)。该模型将连接配置与业务逻辑分离,使URL、认证等参数可集中管理。典型调用流程包括:基于Destination创建Client,设

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 251

搭建AutoSAR开发环境

任何开发都需要一套开发环境,包括软硬件环境,笔者后续将介绍的是 NXP 的 S32K144 配套的开发板。接下来详细介绍怎么获取这些软硬件工具。仅供个人学习使用!

cfl927096306的博客 6110

Javascript中的prototype是什么

参考:https://www.cnblogs.com/socool-hu/p/5665270.html JavaScript prototype 使用介绍 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是

wulong710的专栏 484

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

prototype.js

prototype.js 是Sam Stephenson写的一个Javascript的小框架(实际上是一个函数库),该框架首页是:http://prototype.conio.net/   prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。   pr...

dengyang0029的博客 259

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaScript中的prototype(Notes)

首先,JavaScript中每个对象都有prototype属性,他是用来返回对象类型原型的引用的。我们使用prototype属性提供对象的类的一组基本功能。并且对象的新实例会"继承"赋予该对象原型的操作。但是这个prototype到底是怎么实现和被管理的呢? 对于对象的prototype属性的说明,JavaScript手册上如是说:所有 JavaScript内部对象都有只读的 prototyp...

weixin_34278190的博客 917

Prototype教程(prototype框架和js中的prototype对象的区别)

http://prototypejs.org/learn/ http://api.prototypejs.org/ https://github.com/prototypejs/prototype

nmj2008的博客 237

javascript中apply方法和call方法的作用以及prototype.js中的应用

call方法在msdn中的解释  调用一个对象的一个方法,以另一个对象替换当前对象。apply方法在msdn中的解释 应用某一对象的一个方法,用另一个对象替换当前对象。这个解释也是非常抽象的,这两个方法的作用基本是一样的,举个例子function cls1(){  this.a=123;}cls1.prototype.fun1=function(){  alert(this.a);}funct

兔子专栏 7036

【js】javascript中的原型prototype

感觉先学java再学javascript好痛苦啊。 理解javascript中的原型prototype,proto

Large_beaR的博客 458

【JavaScript】搞懂JS中的prototype、__proto__与constructor

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

sowhat 744

prototype 源码解读 之 prototype.js

时间: 2005-7-16 周六, 上午12:34    标题: prototype 源码解读 之 prototype.js 醒来>http://prototype.conio.net/ 我喜欢Javascript,热衷于 Ajax 应用。我把自己阅读prototype源码的体会写下来,希望对大家重新认识 Javascript 有所帮助。 代码:/**  * 定义一个全局对象, 属性 Versio

xiaocon的专栏 2450

JavaScript中的prototype

web开发者不可不知的prototype属性!

Kevin的逆袭博客 2061

使用Javascript和prototype.js框架创建类型及其相关的prototype属性的简单介绍

Javascript中创建对象可归纳为三种方式:工厂函数、构造函数和原型方式。工厂函数方式利用javascript基础类Object,对Object的一个实例增加相应的属性和方法以达到新类型所期望的结果。如下代码展示了类型NewClassType1含有一个属性attribute1。 //工厂函数方式,返回特定类型的对象实例 functionNewClassType1(){

指尖思维 1981
上一篇: Js中sort()方法的用法
下一篇: JS判断一个值是否在数组中
impressed
博客等级 码龄15年 4粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值