三分钟带你理解JS原型

JavaScript class本质:原型链、constructor与new操作符深度解析 JavaScript中的class并非传统面向对象的类,而是基于原型(prototypes)机制的语法糖。其核心原理在于构造函数(constructors)与原型链的协同工作:new操作符创建实例并绑定[[Prototype]],constructor方法定义初始化逻辑,而所有实例方法自动挂载至prototype对象。这种设计既保留了JavaScript动态、灵活的原型继承特性,又提升了代码可读性与工程协作效率。在实际开发中,理解这一机制对解决this绑定异常、继承链断裂、静态方法调用失败等高频问题至关重要 阅读详情

一. 理论基础

1. 普通对象和函数对象

JavaScript中,万物皆对象!但是对象也是有区别的,分为普通对象和函数对象。

function F(){}; //F:普通对象
var f = new Function(); //f: 函数对象
var o = new Object(); //o: 函数对象

Object、Function是js自带的函数对象。

2. 构造函数

与大部分面向对象的语言不同,JavaScript中并没有引入类(class)的概念,但JavaScript仍然大量使用了对象,为了保证对象之间的联系,JavaScript引入了原型与原型链的概念。
与Java不同,JavaScript的new操作符后面跟的并非类名而是函数名,JavaScript并非通过类而是直接通过构造函数来创建实例。

function Dog(name, color) {
    this.name = name
    this.color = color
    this.bark = () => {
        console.log('wangwang~')
    }
}

const dog1 = new Dog('dog1', 'black')
const dog2 = new Dog('dog2', 'white')

上述代码中,有两个实例被创建,它们有自己的属性,但bark方法是一样的,而通过构造函数创建实例的时候,每个实例都需要创建这个方法。为什么不把这个方法放到一个单独的位置,并让所有实例都可以访问到呢?

3. 构造函数和普通函数

构造函数和普通函数主要有以下区别:

  • 调用方式:
    (1)构造函数需要使用new运算符调用,如果没有参数,可以省略括号,比如new Object
    (2)普通函数的调用不需要new运算符,而且必须有括号

  • this指向
    (1)构造函数的this会指向创建的对象实例上
    (2)普通函数的this则指向函数的调用者

  • 命名方式
    (1)构造函数名称首字母要大写
    (2)普通函数首字母要小写,使用驼峰命名方式


这里就需要用到原型。

二. 原型

  • 每一个构造函数都有一个prototype属性,指向原型对象。当使用这个构造函数创建实例的时候,prototype属性指向的原型对象,就是实例的原型对象。
  • 原型对象默认拥有一个constructor属性,指向指向它的那个构造函数。
  • 每个对象都有一个隐藏属性obj._proto_,每个函数对象都有一个function.prototype,它们指向同一原型对象。
  • 原型对象就是用来存放实例中共有的属性。
  • 访问对象属性时,会先在对象自身属性内查找,若没有找到,则会跳转到对象的原型对象中查找。

那么上述代码就可以修改为

 function Dog(name, color) {
    this.name = name
    this.color = color
}

Dog.prototype.bark = () => {
    console.log('wangwang~')
}

接着就可以创建实例,并访问它的bark方法:

 const dog1 = new Dog('dog1', 'black')
dog1.bark()  //'wangwang~'

这个时候,我们还可以重写bark方法:

const dog2 = new Dog('dog2', 'white')
dog2.bark = () => {
    console.log('miaomiaomiao???')
}
dog1.bark()  //'wangwang~'
dog2.bark()  //'miaomiaomiao???'

由上可知,重写的bark方法是为自己添加了一个新的方法使原型中的bark方法被覆盖了,而并非直接修改原型中的方法。
要修改原型中的方法应该这样:

Dog.prototype.bark = () => {
    console.log('haha~')
}
dog1.bark()  //'haha~'
dog2.bark()  //'haha~'

三. 结语

如有遗漏,后面会继续总结。

参考
https://www.jianshu.com/p/dee9f8b14771
https://juejin.im/post/5a94c0de5188257a8929d837
https://www.cnblogs.com/shayueblog/p/5813230.html
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html

用CodeBuddy CLI三分钟搭建Next.js工具站:从SVG转换到图片处理的完整案例 本文详细介绍了如何使用CodeBuddy CLI这一AI驱动开发工具,在短短三分钟内快速搭建一个功能完整的Next.js图片处理工具站。通过自然语言指令,开发者无需记忆复杂命令,即可自动化生成包含图片缩放、格式转换、SVG转PPT等模块化功能的现代化Web应用,并集成TypeScript、Tailwind CSS和Shadcn/ui,大幅提升前端开发效率。 阅读详情

相关推荐

几款常见存储系统的对比分析

如何对比选择存储系统?本文给你答案!本文将详细对比NetApp、Lsilon、Vast Data、DDN lustre和WekaFS的五个存储系统的简单性、速度、规模及标准。

hongcloudtech的博客 1679

原型链的继承都发生在构造函数上

原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性。 一、初识原型 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,JavaScript的对象中都包含了一个”[[Prototype]]”内部属性,这个属性所对应的就是该对象的原型。

前端菜鸟 441

基于PLC的冲压件自动生产线电气系统设计【附数据】

考虑到生产线的高效运行和维护简便性,选择了三菱FX系列的可编程逻辑控制器(PLC)作为核心控制单元,该型号的PLC因其高可靠性和强大的功能集,在工业自动化领域有着广泛的应用。最后,在完成初步的软件开发后,进行了多轮次的模拟测试和现场调试,逐步修正了存在的问题,最终达到了预期的功能要求。例如,对于进料环节,选用了光电传感器以精确检测物料的位置;此外,为了适应不同尺寸的工件加工需求,还特别设计了一套可调节的夹具系统,不仅提高了生产线的灵活性,同时也降低了更换模具的成本。✅ 感恩科研路上每一位志同道合的伙伴!

lagougongzuoshi的博客 1292

到底什么是JS原型

一、首先大家在对JS原型进行解释的时候,会涉及两个概念:构造函数、原型对象二、使用构造函数创建对象三、与原型有关的几个方法 到底什么是JS原型 转载自blog:到底什么是JS原型 话说在前头,去网上查询很多关于JS原型的解释的文章,其中有80%看了都会不知所云,大多数关于JS原型的解释的文章或者视频,都忽略了很多读者对一些专业名词、概念是不掌握的,或许你说的一句话,就可以绕晕读者,导致大家走了很多很多弯路。在这里先分享我查到的一篇关于JS原型的解释,是最通俗易懂的,地址。 一、首先大家在对JS原型进行解

米不开朗基罗的博客 4811

CMap与L1000技术解析:基因表达数据在药物发现中的应用

本文深入解析了CMap(连接图)与L1000技术在药物发现中的核心应用。CMap通过构建基因表达“关系网”,实现基于模式匹配的药物重定位;L1000技术则以低成本、高通量方式生成关键基因表达数据,支撑了LINCS超级数据库。文章以CLUE平台为例,手把手演示了如何利用疾病基因表达签名逆向筛选潜在治疗化合物,并拓展了其在解析药物机制、预测副作用等多场景下的价值。

weixin_29207533的博客 728

SWAT模型非点源模拟原理

目录引言模型概述非点源污染模拟原理物质迁移内容过程营养物农药病原菌运移河道水质模型营养元素的地表水体循环河道水质模拟藻类模拟氮元素磷元素生化需氧量及溶解氧重金属的运移蓄水体水质模拟 引言 今天无意接触到这一块,就记录下来了。 模型概述 1、流域中非点源污染的来源主要是农业化肥和农药的施用。 2、氮、磷等营养物和农药的迁移和转化取决于化合物在土壤环境中经历的转化过程。 3、SWAT模型可以模拟水文相应单元内氮、磷完整的营养物循环过程和任何一种农药的降解过程。 4、SWAT模拟流域内泥沙、藻类、溶解氧、有机污染

DoWayChan的博客 4878

js中的原型

原型就是每个对象都拥有一个属性,被称为原型,原型指向的对象称为“原型对象”。原型分为“隐式原型”和“显示原型”。JavaScript中每一个对象都有一个特殊的内置属性,这个属性指向的对象称为隐式原型对象。早期ECMA规范没有规定如何去查看,但是大部分浏览器给对象提供了 属性,可以查看这个对象的原型对象(实际开发不要使用因为有部分游览器没有提供,兼容性有问题)。后期ECMA提供了 ,可以查看原型对象。原型对象就相当于是对象的父类,当我们获取对象没有的属性时,对象就会自动去原型对象中查找(沿着原型链查找)代码

m0_46217225的博客 2322

Windows 11 IoT企业版LTSC 24H2/25H2中文版安装指南(含OEM激活教程)

本文详细介绍了Windows 11 IoT企业版LTSC 24H2/25H2中文版的安装与OEM激活全流程。从系统镜像准备、硬件兼容性检查到自动化安装配置,再到OEM激活方案(包括SLIC注入和数字许可证激活),为工业自动化、数字标牌等物联网设备提供稳定可靠的系统部署指南。

weixin_29198045的博客 8864

javascript之原型与原型链

借鉴原文原型与原型链 一、prototype 在javascript除外,每一个函数都有一个prototype属性,这个属性指向函数的原型 function Person(age) { this.age = age } Person.prototype.name = 'kavin' var person1 = new Person() var person2 = new Person() console.log(person1.name) //kavin console.log(per

zhao97的博客 1184

【华为OD机试】真题E卷-一种字符串压缩表示的解压(C++)

有一种简易压缩算法:针对全部为小写英文字母组成的字符串,将其中连续超过两个相同字母的部分压缩为连续个数加该字母,其他部分保持原样不变。例如:字符串aaabbccccd 经过压缩变成字符串 3abb4cd请您编写解压函数,根据输入的字符串, 判断其是否为合法压缩过的字符串若输入合法则输出解压缩后的字符串 否则输出字符串!error来报告错误。

u014481728的博客 894

2026 AI Agent Harness Engineering 生态报告:开源工具链的现状与未来趋势

IEEE P2863-2025《通用人工智能自主代理技术架构与评估规范》于2025年11月正式发布,将AI Agent(通用人工智能自主代理)定义为:一种具备感知(Perception)、记忆(Memory)、推理(Reasoning)、规划(Planning)、行动(Action)五大核心能力闭环,能够在无显式指令覆盖全部环节的前提下,自主完成特定领域或开放领域复杂任务的智能实体。

AI 算法实战派 497

JS 原型的含义和使用

定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。 对定义的解释: 所有的function对象都有一个系统自带的prototype属性,翻译过来即“原型”。假设有这么一个构造函数function Person(){}, function对象Person的prototype属性(即原型)也是一个对象,存在Person.prototype = {},我们可以把Person.prototype理解为Perso.

qq_45560350的博客 1602

EndNote导入文献出现带有大括号{}乱码的解决办法

进入word中的Endnote工具栏——Bibliography Preferences(位于Bibliography区块的右下角),就是那个输入杂志名的小三角形,在Temporary citation delimiters处修改变量的默认符号。将默认的大括号{}修改为文章中不回使用到的符号。原因:因为Endnote插入的参考文献在Word中的代码就是以大括号隔开的,当文章中出现了该符号,endnote就会自动比对Library中的书目,而此时endnote出现错误。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 4万+

三分钟带你了解JS、原型、原型链

三分钟带你了解JS、原型、原型链

月影WEB的博客 427

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

三分钟带你看懂prototype原型——ES6进阶

三分钟带你看懂prototype原型——ES6进阶1. prototype 定义2. new 构造函数3. 存储4. prototype 作用 1. prototype 定义 在JS中的类的实现是基于Prototype的,基于原型的继承比基于类的继承在概念上更为简单:一个新对象可以继承一个旧对象的属性 2. new 构造函数 代码很短很简单,要看完嗷~ // 源于黑马视频教程 function Star(uname,age){ this,uname = uname; this.age =

qq_41297145的博客 815

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

三分钟快速理解什么是 JavaScript 的继承

其实JavaScript中的继承,就是指的是一种机制,它允许一个对象(子对象)获取另一个对象(父对象)的属性和方法。这样的话子对象可以重用父对象的代码,同时还可以添加自己的特定功能。JavaScript是使用原型继承的方式来实现对象之间的继承关系。

Itmastergo的博客 183

假人有限元模型

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

三分钟看完JavaScript原型与原型链

前戏 写的比较短了,三分钟看完应该是没问题(嗯。。)。 当然最好再花半小时思考理解一下。 正文 构造函数与原型 与大部分面向对象语言不同,JavaScript中并没有引入类(class)的概念,但JavaScript仍然大量地使用了对象,为了保证对象之间的联系,JavaScript引入了原型与原型链的概念。 在Java中,声明一个实例的写法是这样的: ClassName obj = new ...

weixin_33912453的博客 173

快马平台一键生成:用OpenSpec三分钟搭建可运行API原型

它的核心功能是,你只需要把写好的OpenSpec文档内容贴进去,或者用自然语言描述你的API想法,它就能利用内置的AI能力,理解你的意图,并自动生成对应框架(如Node.js的Express或Python的FastAPI)的、结构清晰、可直接运行的完整项目代码。对于我生成的这个持续提供HTTP服务的API项目,平台的一键部署能力更是锦上添花,这意味着我可以将这个原型直接部署到一个临时的在线地址,分享给同事或客户进行体验,完全省去了自己配置服务器和域名的麻烦。当然,这个原型是“可运行”的,但也是“基础”的。

ThunderstormLynx23的博客 233

一次搞懂原型、原型链及其继承

说到原型链,想到前几年刚学习的时候看到的图,相信大家不陌生,现在想起来,这图确实有点画蛇添足了

illusion_melody的博客 521

推荐几篇关于原型和原型链的文章【必看】

相关资料 三分钟看完JavaScript原型与原型链 JavaScript’s Pseudo Classical Inheritance diagram Javascript inheritance behind the scene proto, ‘prototype’ and prototype 我来重新学习 javascript 的面向对象(part 4) ...

闰土月下追猹 154

别再只把Cursor当代码编辑器了!它的Composer模式,是隐藏的原型设计神器

本文深入解析Cursor的Composer模式如何成为开发者的AI原型设计神器,实现代码生成与界面设计的无缝衔接。通过项目级上下文理解、结构化输出和高效提示词技巧,开发者能快速构建可运行的原型系统,显著提升工作效率。特别适合需要快速验证交互逻辑的前端开发场景。

weixin_30752699的博客 433

JavaScript笔试题

1.有关变量作用域的提升 (function(){ var x = y = 1; })(); alert(x); alert(y); 此处思考五分钟。。。。 答案: undefined 1 解析: var x = y = 1;等价于y = 1;var x = 1; 此时y为一个全局变量,函数外可以访问。x为一个局部变量,函数外不可以访问。 知识点: 有关变量作用域的...

Jane_96的博客 794

Website-downloader:三分钟搞定整站下载的Node.js神器

你是否曾遇到过这样的困扰?看到一个精美的网站设计,想要离线保存研究;发现一篇珍贵的教程,担心网站突然关闭;或是需要备份自己的博客内容,却不知道如何完整保存所有资源。传统的浏览器"另存为"功能只能保存单页,而手动下载图片、CSS、JavaScript文件更是繁琐至极。 现在,想象一下:只需输入一个网址,点击一个按钮,就能**一键下载整个网站的完整源码和所有资源文件**。这正是Website-dow

gitblog_00024的博客 108

从原型链污染到 XSS 攻击:ppfuzz 如何一键生成利用 Payload

原型链污染(Prototype Pollution)是前端安全领域最容易被忽视的漏洞之一,而 ppfuzz 是一款用 Rust 🦀 编写的**原型链污染扫描工具**,能以极快的速度扫描客户端原型链污染漏洞,并自动识别页面中可利用的 JavaScript 库(Gadget),**一键生成可直接验证的 XSS 利用 Payload**。无论你是安全测试新手,还是经验丰富的 Bug Bounty 赏金

gitblog_00695的博客 766

【CodeBuddy】三分钟开发一个实用小功能之:记忆翻牌配对游戏

我需要一个记忆翻牌游戏,包含计时器、步数统计、动态卡片生成、胜利弹窗…”当开发者将这些需求输入CodeBuddy时,就像在咖啡厅向一位全栈工程师描述构想。AI通过自然语言理解,瞬间规划出技术方案:用<div>构建卡片容器,通过CSS的transform实现3D翻转效果,借助grid布局响应式适配,最后用JavaScript管理游戏状态。整个过程如同思维导图在数字世界具象化,需求与技术实现之间架起无形桥梁。

zevjay的博客 1068

三分钟了解 JavaScript 在前端开发中的核心作用

JavaScript 是现代前端开发的核心技术,广泛应用于网页交互、动态内容生成、用户界面设计以及与后端通信等多个方面。通过与其他前端技术(如 HTML 和 CSS)的协同合作,JavaScript 实现了现代网页的复杂功能和交互效果。未来,随着技术的不断发展,JavaScript 将继续在前端开发中发挥重要作用,推动网页应用向更加高效、智能和友好的方向发展。本人是10年经验的前端开发和UI设计资深“双料”老司机,1500+项目交付经历,带您了解最新的观点、技术、干货,下方微信我可以和我进一步沟通。

2401_87844781的博客 1007
上一篇: 【JS基础】从零开始带你理解JavaScript闭包--我是如何彻底搞明白闭包的
下一篇: JavaScript的事件循环与宏微任务
Colin_Mindset
博客等级 码龄12年 159粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值