原型与原型链

JavaScript的原型与原型链 对象(Object)是一种无序的键值对集合,键为字符串,值可以是任意类型。函数也是对象。每个对象都有一个属性__proto__,它指向另一个对象,而这个对象又通过属性__proto__指向另一个对象。当我们访问一个对象(例如u1)的属性时,首先会在该对象自身的属性中查找,如果未找到,则会沿着__proto__一直向上查找,形成一个链式结构,这个结构称为原型链。如果在原型链中找到所请求的属性,就返回该属性的值;如果在整个原型链中都未找到该属性,则返回undefined。 阅读详情

image
由图可看出绝大多数对象都继承自Object.prototype,还有例外继承自(0bject.create(原型))

定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象

示例一:
Person.prototype.name = 'abc';
	      function Person() {
			// 这里并非是创建一个this对象,只是为了表达new的时候有新对象生成
			// var this = {
			//	__proto__ : Person.prototype		
			//}
		}
		var obj = {
			name : "sunny"
		}
		var person = new Person();
		person.__proto__ = obj; /改变指向
		console.log(person.name);  // sunny
示例二:
Person.prototype.name = 'sunny';
function Person() {}
var person = new Person ();
Person.prototype.name = "cherry";
console.log(person.name);//返回是cherry
// 底层原理
var obj  = {name : 'a'};
var obj1 = obj;
obj = {name : 'b'};

继承模式

圣杯模式

var inherit = (function (){
        	var F = function(Target, Origin){};
        	return function(){
        		F.prototype = Origin.prototype;
        		Target.prototype = new F();
        		Target.prototype.constructor = Target;		
    Target.prototype.uber = Origin.prototype
        	}
  }())

bind的源码实现

Function.prototype.newBind = function(target) {
        let self = this
        let args = [].slice.call(arguments, 1)
        let temp = function() {}
        let f = function() {
            let _args = [].slice.call(arguments, 0)
            return self.apply(this instanceof temp ? this : (target || window), args.concat(_args))
        }
        temp.prototype = self.prototype
        f.prototype = new temp()     
        return f
    }

    let obj = {
        x: 20
    }

    function show(x, y, z, w) {
        console.log(this, x, y, z, w)
    }

    let newShow = show.newBind(obj, 2, 3, 4)

    console.log(new newShow(1).constructor)
【JS原型与原型链详解】 原型:对象共享属性和方法的模板。原型链:实现继承的链式查找机制。最佳实践:优先使用class(ES6 语法糖,基于原型)。 阅读详情

相关推荐

10分钟学会工程领域Hypermesh与Abaqus联立处理大量铆钉连接简化做法

铆钉连接是一种可靠且高强度的机械连接方式,广泛应用于多个领域。但是,工程结构上铆钉连接往往以较大的数量出现,若按照常规的一个个去选择生成,处理1个铆钉连接点需要1分钟来算,300个铆钉需要5个小时,耗费大量的时间成本。给出了一种高效处理铆钉连接的方法,提升效率50倍以上。

qq_34933927的博客 1616

js 原型和原型链

原型: 定义: 原型是function 对象(构造函数)的一个属性,他定义了构造函数制造出的对象的公共祖先,通过该构造函数产生的对象,可以继承原型的属性或方法,原型本身也是对象。 当许多个体都有相同的属性名和属性值时,我们可以选择把他们提到原型里。(提取共有属性)。 另附对象查看对象的构造函数方法: object. constructor; var obj = {nam...

实心爆米花胡乱说说 222

EBSD数据转ABAQUS的inp文件实操指南

晶体塑性有限元模拟中,如何将材料微观组织表征数据转化为可计算的有限元模型,是连接实验与仿真的关键环节。EBSD技术能够获取材料表面的晶体取向、晶粒形貌和晶界分布信息,但这类数据需要经过格式解析、欧拉角转换、网格生成等步骤,才能被ABAQUS等有限元软件读取。通过将扫描点坐标映射为节点、按像素邻域生成单元,并将Bunge约定欧拉角变换为局部坐标系方向余弦,用户可以准确构建包含真实微观结构的inp文件模型。这一流程广泛应用于金属材料形变、织构演化及应力集中分析等研究场景,有效提升仿真结果与实验的一致性。围绕数据

weixin_42509513的博客 312

javascript中的原型与原型链

一、什么是原型 原型:每一个javascript对象(除null外)创建的时候,都会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。 例如 var obj = new Object(); 创建一个对象的时候都会同时关联一个对象,如图,关联的这个对象就是新建的对象obj的原型 二、prototype 在JavaScript中,每个函数都有一个pr...

涂涂 2万+

手把手教你用Python模拟侧信道攻击:从电磁辐射到数据窃取(附防御代码)

本文详细介绍了如何使用Python模拟侧信道攻击,从电磁辐射信号采集到数据窃取的全过程,并提供了实用的防御代码。通过实战案例,帮助安全研究员和开发者理解侧信道攻击原理,掌握信号处理与图像重建技术,同时学习有效的噪声干扰和电磁屏蔽防御措施。

weixin_28716443的博客 163

CMU开源NavRL:深度强化学习如何破解无人机动态避障难题?

卡内基梅隆大学(CMU)开源了NavRL框架,利用深度强化学习解决无人机在复杂环境中的动态避障难题。该框架通过创新的状态表示、多目标奖励函数设计以及独立的安全屏障机制,使无人机能够通过仿真训练自主学会灵活、安全的导航策略,并成功实现从仿真到真实环境的零样本迁移。

hope8的博客 720

js原型与原型链详解(万文总结,一文搞懂原型链!)

JavaScript中的原型和原型链:1,每个对象均存在隐式原型(__proto__),函数对象才有prototype属性2,__proto__存在的意义在于为原型链查找提供方向,原型链查找靠的是__proto__,而不是prototype3,函数对象的__proto__都指向Function.prototype4,每个对象都有一个隐式原型属性(__proto__),多个原型通过__proto__链接在一起形成的链式结构就是原型链😃。

Yi_qian的博客 3万+

高效爬取懂车帝车型数据:从静态解析到动态反爬实战

本文详细解析了如何高效爬取懂车帝车型数据,从静态HTML解析到动态接口反爬的完整实战路径。文章重点介绍了使用浏览器开发者工具定位数据、应对CSS混淆与参数加密等反爬策略,并提供了整合静态与动态抓取逻辑的Python代码示例,帮助开发者稳健地获取结构化车型信息。

wind6的博客 937

原型与原型链--超简单讲解

原型与原型链,是所有JS初学者的噩梦,虽然工作过程中用不到,但是理解他对于我们写代码,看源码都有很大的提升,下面就带大家一步一步,认识原型与原型链 原型 原型的概念:每一个javascript对象创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。 一:prototype 在JavaScript中,每一个函数都有一个 prototype 属性,该属性指向函数的原型对象。 当用该函数构造出一些对象之后,这些对象也继承了原型对象上的属性,来看看下面的例子 func

李文涛的博客 5886

《我的Classic Platform AUTOSAR之路》 BSWM 模式管理(二)ESH

只有 PostRun 和 wakeup 才能切换到 RUN,其他状态需要先切换到 wakeup 模式。进入 RUN 模式需要打开通信 allow,退出 Run 需要 disable 通信 allow。Prepareshut 与 dem_shutdown 绑定,如果没有 dem 配置,不会生成。除了 Init 模式下,其他模式下都要检查 ECU 的唤醒源和通信 pending 需求。与 ECUM 相关,整个 ECU 状态管理的状态机制。postrun 可以不配置,需要根据自己的需求使能。

libuping2023的博客 965

SAP 中配置权限职责菜单并分配给用户的核心流程是:用PFCG 创建 / 维护角色(含菜单、事务码、权限)→ 生成权限参数文件 → 通过 SU01/SU10 将角色分配给用户

SAP权限配置核心流程:1)通过PFCG创建角色,配置菜单事务码及权限对象;2)生成权限参数文件;3)用SU01/SU10分配角色给用户。关键步骤包括:在PFCG中维护菜单结构、设置权限字段值、生成Profile,通过用户比较验证权限。批量分配可用SU10,特殊需求可创建复合角色或自定义权限对象。常见问题需检查权限缺失(SU53)、菜单分配及组织级别设置。流程简化为:创建角色→配置权限→分配用户→验证生效。

金牌架构师 1275

JavaScript 原型与原型链

JavaScript 中的原型(Prototype)和原型链(Prototype Chain)是其核心特性之一,理解它们对于掌握 JS 的继承机制、对象属性查找以及代码复用至关重要。

chanyeol14805的博客 1909

【WRF数据准备】海温(SST)数据替换

【WRF数据准备】海温(SST)数据替换

WW、forever的博客 1119

JavaScript原型与原型链详解

原型(Prototype)是JavaScript中最重要的核心概念之一,它是JavaScript实现继承的基础机制。深入理解JavaScript对象模型掌握JavaScript中继承的实现方式理解内置对象(如Array、String等)的工作原理能够更好地使用和扩展JavaScript内置对象理解现代JavaScript框架和库的源码// 在学习原型前,我们可能写出这样的代码来共享方法return {age: age,return `你好,我是${this。

yk_dflkg的博客 1838

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怀旧版电脑GBC模拟器

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

详解原型与原型链

详解原型与原型链 其实,刚开始学JavaScript时,就有学过原型与原型链的相关知识了,只是当时还没有养成写笔记的习惯,导致现在已经忘的七七八八了。 这边文章真是花了很多心思,写了两天,看了很多篇篇博文,其中有小参考的,有解决一点疑惑的,但是最后只标注了一篇帮助最大的。 构造函数 实例的构造函数属性(constructor)指向其构造函数 function Person(name) { this.name = name } const person = new Person('clz') cons

赤蓝紫の博客 5068

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

javascript原型继承与原型链

当访问一个对象的属性或方法时,首先查找这个对象自身有没有该属性如果没有就查找它的原型(也就是 __proto__ 指向的 prototype 原型对象)如果还没有就查找原型对象的原型(Object的原型对象)以此类推一直找到 Object 为止(null)__proto__ 对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线可以使用 instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上三、实现继承的方式。

2301_82023822的博客 1430

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

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

JavaScript之彻底理解原型与原型链

1.前言 原型与原型链知识历来都是面试中考察的重点,说难不算太难,但要完全理解还是得下一定的功夫。先来看一道面试题开开胃口吧: function User() {} User.prototype.sayHello = function() {} var u1 = new User(); var u2 = new User(); console.log(u1.sayHello === u2.sayHello); console.log(User.prototype.constructor); consol

战场小包的博客 2445

8. 原型与原型链

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点:JavaScript 中一切引用类型都是对象,对象就是属性的集合。Array 类型、Function 类型、Object 类型、Date 类型、RegExp 类型等都是引用类型。也就是说数组是对象、函数是对象、正则是对象、对象还是对象。 二、原型和原型链是什么 上面我们说到对象就是属性(property)的集合,有人可能要问不是还有方法吗?其实方法也是一种属性,因为它也是键值对的表现形式。 可以看到 上确实多了一个

LBJ辉的前端天地 760

JavaScript原型与原型链

原型与原型链原型显式原型与隐式原型原型链 原型 我们创建的每个函数都有一个 prototype(原型) 属性,这个属性是一个指向一个对象的指针,这个对象的用途是存储由该函数实例化出的所有对象所共享的属性和方法。 在默认情况下,所有原型对象都会自动获得一个 constructor(构造函数) 属性,这个属性是一个指向 prototype 属性所在函数的指针 举个例子,如下代码: func Person() { Person.prototype.name = "jack" Person.prototype.

qq_43747991的博客 2007

JavaScript 原型链与原型链污染全解析

【代码】JavaScript 原型链与原型链污染全解析。

hddi1的博客 1009

JavaScript 原型链与继承

原型链与继承 系列文章 这是JavaScript系列文章: 类 promise async & await 原型链与继承 闭包 this CommonJS ES6 Module 文章目录原型链与继承系列文章

一出好剧 9505
上一篇: js中this问题
下一篇: 数组
ccxCode
博客等级 码龄8年 1粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值