使用Object.setPrototypeOf()设置对象的原型

2023-11-07

此方法可以设置对象的原型。
Object.setPrototypeOf方法是针对对象实例的,而不是构造函数(类),此方法修改的是对象实例的内部属性[prototype],也就是_proto_属性所指向的对象,它只是修改了特定对象上的原型对象,对于构造函数的prototype指向的原型对象没有影响。那是不是此方法就不能针对构造函数了,因为构造函数本身也是function(类)的实例。
ES2015新增此方法。
语法结构:
Obejct.setPrototypeOf(obj,proto);
参数解析:
(1).obj:必需,对其设置原型的对象。
(2).proto:必需,新的原型对象。

浏览器支持:
(1).IE11浏览器支持此方法。
(2).edge浏览器支持此方法。
(3).火狐浏览器支持此方法。
(4).谷歌浏览器支持此方法。
(5).opera浏览器支持此方法。
(6).safria浏览器不支持此方法。

JavaScript代码实例如下:

 let proto=
    {
    url:"www.softwhy.com"
    };
    let obj=
    {
    webName:"蚂蚁部落",
    age:4
    };
    Object.setPrototypeOf(obj,proto);
    console.log(obj.url);

上述代码将obj对象的原型对象设置为proto对象。

function Antzone(){
  this.webName="蚂蚁部落";
  this.age=4;
}
 
let proto = {
  url:"www.softwhy.com"
};
Antzone.prototype.address="青岛市南区";
let one=new Antzone();
let two=new Antzone();
Object.setPrototypeOf(one, proto);
console.log(one.address);
console.log(two.address);

代码分析如下:
(1).为构造函数Antzone原型对象添加一个属性address。
(2).通过构造函数Antzone创建两个实例对象。
(3).然后通过Object.setPrototypeOf方法更改one对象的原型对象,更改为proto对象。
(4).现在看打印结果,由于one对象的原型对象被修改,新的原型对象中并没有address属性,所以one对象的address属性值是undefined。two对象的address属性依然"青岛市南区",可以看到通过Object.setPrototypeOf方法修改对象实例的原型对象,不会对其他对象的原型对象产生影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Object.setPrototypeOf()设置对象的原型 的相关文章

  • Monodroid JavaScript 接口

    Monodroid 尚未原生支持 JavaScriptInterface 与 WebView 我正在寻找可用于此解决方法的示例 java 文件 IntPtr JavaScriptInterface Class JNIEnv FindClas
  • 使用普通的旧 JS 动态渲染 DOM 元素的好方法是什么?

    我面临的挑战是使用普通的旧 Javascript 构建一个单页应用程序 不允许使用任何库或框架 虽然在 React 和 Angular 中创建动态 DOM 元素相当简单 但我提出的普通 JS 解决方案似乎很笨重 我想知道是否有一种特别更简洁
  • HTMLPanel 中的 JavaScript

    我想在 HTMLPanel 元素中包含 Javascript 代码 但它不起作用 请你帮助我好吗 提前致谢 脚本 pro js alert hello 使用 HTMLPANEL 不起作用 不显示警报 我认为应该是相反的 HTMLPanel
  • 单击传单形状时如何获取它的图层类型?

    我的 Leaflet 项目允许用户绘制形状 线条 矩形和多边形 用户可以单击形状来获取其统计数据 面积 周长等 我在我的FeatureGroup 上尝试了一个点击事件 其中添加了我绘制的所有形状 我不确定这是否是最好的方法 然后单击后 将调
  • 如何使用react-native-router-flux在模态中进行导航

    我需要在我的反应本机应用程序中的模式中进行导航 使用新版本的react native router flux 似乎不可能做到这一点 我可以创建一个垂直动画来显示下一个场景 这与场景顶部的模态不同
  • 使用 ReactJS 突出显示文本

    我试图突出显示与查询匹配的文本 但我不知道如何让标签显示为 HTML 而不是文本 var Component React createClass highlightQuery function name query var regex ne
  • jquery如何获取右、左、上、下箭头键值

    我使用了下面的代码 每当单击箭头键 左 右 上 下 时 我得到的键值为 0 任何人都可以帮忙解决这个问题吗 document keypress function e alert key value e which 如何获取 上 下 右 左
  • scrollTop 在 Chrome 中不起作用,建议的解决方法也不起作用

    许多其他问题 here https stackoverflow com questions 2544979 is there a problem with scrolltop in chrome here https stackoverfl
  • 如何使用 jQuery 在悬停元素旁边显示一个 div?

    假设我有severaldiv 像这样 EDIT div class ProfilePic a href img src lib css img profile pic1 png alt class ProfilePicImg a div c
  • 隐藏加载失败的图片

    我有一个 Android 应用程序 它生成一些在本地 Webkit 视图中呈现的 HTML HTML 生成的细节实际上并不那么重要 除了 大部分来自一个地方 我无法改变它 HTML 周围的模板 包括页眉 页脚 HEAD 等 CSS 和 Ja
  • 如何防止字段的角度自动修剪?

    有没有什么方法可以防止整个应用程序中字段的角度自动修剪 我知道我可以使用 ngTrim 指令防止指定字段出现这种情况 但将此指令添加到应用程序中的所有文本字段看起来不太好 有什么方法可以对 Angular 模块中的所有字段执行此操作吗 这是
  • IE9:奇怪的 JavaScript 错误

    我尝试在网站中显示 Google DFP 广告横幅时遇到错误 这些广告在除 IE9 之外的所有浏览器中展示 您可以在此处查看带有横幅的简单测试页面 离线演示 错误是 抛出异常但未捕获 google ads js 第 34 行字符 474 I
  • 浏览器中的javascript:异步任务执行模型

    我正在尝试集中注意力并了解 javascript 异步在单线程浏览器环境中的工作原理 作为异步 我们可以同时处理计时器和 xhr 请求 现在假设我有类似下面的东西 function doStuff for var i 0 i lt 1000
  • Svg 点击事件无法正常工作

    我试图让我的 SVG 看起来像一个 饼形 看起来一切都很好 此外 我希望它们每个都有不同的点击事件 function one alert 1 function two alert 2 function three alert 3 funct
  • Mapbox 关闭除一层之外的所有图层

    我是 Mapbox 和 javascript 的新手 我试图稍微修改一下 Mapbox GL 代码示例 发现here https www mapbox com mapbox gl js example toggle layers 允许打开
  • Google Calendar API:获取指定日期的空闲时段列表

    我需要获取我的谷歌日历中的免费时段列表 现在我只是获取事件列表 我在用谷歌日历 https www npmjs com package google calendar npm google calendar events list calO
  • jquery ui 自动完成添加跨度

    我在 div 上使用 jQuery 自动完成 但我得到了 jquery 自动添加的额外范围 span class ui helper hidden accessible search test span 如何防止创建此跨度 我通过添加 CS
  • 返回语句后的声明

    function f return f1 function f1 return 5 f returns 5 为什么这有效 之后声明局部函数有什么好处return 这是好的做法吗 它之所以有效 是因为函数声明都是由解释器在第一次传递时评估的
  • Google Maps JavaScript API v3 方向功能

    我使用 Google Maps js API v3 我可以根据路径点显示方向this http code google com intl hu apis maps documentation directions Waypoints 我想要
  • 访问 django for 循环中的元素

    我有一个 Django 模板 其中包含以下代码 该模板创建多个按钮并尝试通过单击 在同一按钮上 删除 隐藏其中一个按钮 for h in helicopters div class btn group div

随机推荐

  • 【OpenCV4】使用 normalize() 进行归一化(c++)

    函数原型 void cv normalize InputArray src InputOutputArray dst double alpha 1 double beta 0 int norm type NORM L2 int dtype
  • iptables详解及应用(史上最全)

    1 1 iptables概念 从逻辑上讲 防火墙可以大体分为主机防火墙和网络防火墙 主机防火墙 针对于单个主机进行防护 网络防火墙 往往处于网络入口或边缘 针对于网络入口进行防护 服务于防火墙背后的本地局域网 网络防火墙和主机防火墙并不冲突
  • matplotlib绘制柱状图(普通、堆叠、左右分布)

    文章目录 1 堆叠图 2 左右图 示例代码 3 堆叠 左右 示例代码 不论是堆叠 还是左右分布 其实他们都是柱状图bar 只是根据参数的不同 有不同的显示位置 多个bar呈现在一起就看上去像是堆叠起来 或是左右分布了 因此只需要控制bar的
  • Python3学习(七):模块

    Python3 模块 把一些可以反复使用的代码存放在文件中 为一些脚本或者交互式的解释器实例使用 这个文件被称为模块 模块是一个包含所有你定义的函数和变量的文件 其后缀名是 py 模块可以被别的程序引入 以使用该模块中的函数等功能 类似于C
  • JVM 如何自动完成垃圾回收

    一 简介 思考一个问题 在 java 里面我们 new 一个对象 等到程序结束后 这个对象就被自动回收了 完成这项工作只需要确定 哪些内存需要回收 什么时候回收 如何回收 接下来我们详细的解释下这三个问题 二 哪些内存需要回收 由于程序计数
  • 判断大小端存储两种办法

    1 强制转换 给定 int类型的变量a 赋值为1 1的16进制为 00 00 00 01 若小端存储则a中存储为 01 00 00 00 大端存储为 00 00 00 01 则可以取出a的地址强转为char 类型 char a来判断值为0
  • 2023最新最全git安装教程,保姆级手把手式安装!!!

    目录 一 git简介 二 安装过程 1 首先进入git的官网 https git scm com 然后选择Downloads 2 接着选择与自己电脑系统对应的下载选项 我的电脑是windows7的系统 因此选择windows 3 进去之后
  • [导入]TOMPDA WAP新闻订阅教程

    要浏览本条信息请点击文章标题 文章来源 http www wapkf com article other wap 2006 20060511241 html 转载于 https www cnblogs com 200831856 artic
  • 有哪些值得推荐的好用视频剪辑软件?

    首先 我们不管是工作需要 还是做自媒体 一款用着顺手的视频剪辑软件必不可少 经常看到很多人说我是小白 但又想学习视频剪辑 该如何选择适合自己的视频剪辑软件呢 看到抖音 小红书里面很多有意思的视频 自己也想剪辑试试 但又不知从何下手 话不多说
  • HuggingFace——Accelerate的使用

    Overview Accelerate is a library that enables the same PyTorch code to be run across any distributed configuration by ad
  • 20171207编写一个程序,只接受正整数的输入,然后显示所有小于或等于该数的素数。

    素数 在大于1的整数中 只能被1和这个数本身整除的数 思路 用一个标志sign 来标记出素数 include
  • flink学习40:tableAPI的扫描、投影、过滤、列操作

    from用法 select用法 as用法 where用法 filter用法 列操作 增 删 改
  • 【单例模式】

    单例模式 单例模式常见的几种方法 饿汉式 懒汉式DCL 懒汉式内部类 单例模式常见的几种方法 饿汉式 饿汉式 private final static SingletonPattern singletonPattern new Single
  • centos7 升级openssl1.1.1g、openssh8.6p1小记

    系统版本 CentOS Linux release 7 6 1810 Core 默认版本 OpenSSH 7 4p1 OpenSSL 1 0 2k fips 升级版本 OpenSSH 8 6p1 OpenSSL 1 1 1g 1 安装步骤
  • windows10中安装ubuntu双系统时出现unable to find a medium containing a live file system解决办法

    在ubuntu官网上下载最新的18 04 1LTS版本 通过rufus软件将其写入U盘中 但在电脑安装时出现如下错误 经搜索得到如下信息 原贴链接 只需在安装进行到如下界面时 拔掉U盘再插上即可解决问题
  • 我使用OpenCvSharp的一些坑,我的使用心得

    首先是关于 copyto 的操作郁闷 资源图片 需要 是正方形 或者 宽 大于高经我测试 长宽 大小的情况 还是需要跟背景有相应的一致性 比如如果背景 是长大于宽 则资源文件 也需要长大于宽 反之亦然 正方形的图片 则无此要求 要比背景图片
  • Mybatis高级映射

    Mybatis高级映射本质上来说是多个表的联合查询过程 订单数据模型分析思路 数据表 用户表user 记录了购买商品的用户信息 订单表orders 记录了用户创建的订单 购买商品的订单 订单明细表orderdatail 记录了订单的详细信息
  • 玩转Netty,从“Hello World”开始

    大家好 我是老三 之前里 我们讨论了Java的三种IO模型 提到了网络通信框架Netty 它简化和优化了NIO的使用 这期 我们正式开始走近Netty 为什么要用Netty 首先当然是NIO的使用 本身比较复杂 而且还存在一些问题 除此之外
  • Ubuntu 软件包管理详解

    Ubuntu 软件包管理详解 Ubuntu 方便宜用 最值得让人称道的便是其安装软件的方式 一条命令 sudo apt get install xxx 就几乎能帮你搞定所有的软件安装难题 但是有时你可能有这样的需求 查看某个软件包是否安装
  • 使用Object.setPrototypeOf()设置对象的原型

    此方法可以设置对象的原型 Object setPrototypeOf方法是针对对象实例的 而不是构造函数 类 此方法修改的是对象实例的内部属性 prototype 也就是 proto 属性所指向的对象 它只是修改了特定对象上的原型对象 对于