JS 对象引用问题

var a = {n:1};
var b = a;
a = {n:2};
a.x = a ;
console.log(a.x);
console.log(b.x);


var a = {n:1};
var b = a;
a.x = a = {n:2};
console.log(a.x);
console.log(b.x);


这两个问题主要理解两点就很简单了。

对象是引用类型,改变赋值只是改变指针的引用。运算符=相当于改变指针的指向。
运算符的优先级。. > =。 即:在a.x = a = {n:2};中,先给对象a添加x属性,再进行a={n:2}与a.x={n:2}两个赋值操作。
问题1:
// 变量a 指针指向对象 {n:1}
var a = {n:1};
// 变量b 指针指向对象 {n:1}
var b = a;
// 变量b指针不变,仍指向{n:1}; 变量a指针改为指向对象 {n:2}
a = {n:2};
// 注意运算符的优先级。先给对象a增加x属性,再给x属性赋值。此时x属性的值指向a对象自身。即:a = {n:2,x:a}
a.x = a ;
console.log(a.x); // {n:2,x:a}
// 由于b指针没变,还是指向{n:1} ,故b.x: undefined
console.log(b.x);

问题2:
var a = {n:1};
// b与a的指针均指向 {n:1}
var b = a;
// 注意运算符优先级`.` > `=`
// 先给a添加x属性。故添加x属性后,a指向的对象{n:1}变为{n:1, x:undefined/待赋值}, 由于b是和a指向的同一个对象,所以此时b={n:1, x:undefined/待赋值}
// 赋值操作(从右往左进行)。 a = {n:2}, a的指针由指向{n:1,x:{n:2} 变为指向对象 {n:2}
// 然后再进行赋值操作。a.x = {n:2} ,故x属性的值为{n:2},由于b是和a指向的同一个对象,此时a=b={n:1,x:{n:2}
a.x = a = {n:2};
// 此时a={n:2}, 故a.x为undefined
console.log(a.x);
// b指针始终没变,b={n:1,x:{n:2}}, 故b.x为{n:2}
console.log(b.x);

转载于:https://www.cnblogs.com/yzhihao/p/6409098.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工程代码_Egret开发笔记(二)基础工程代码阅读

代码目录结构在Egret Wing中打开上一节中我们创建的项目工程,查看代码目录结构,Forward在如下图中标记了各个目录的及关键文件的用途。代码阅读理解接下来我们从web入口一步一步阅读初始代码。首先打开index.html文件,我们看到index文件内容如…

知晓云助力小程序开发

小程序开发遇到瓶颈虽然腾讯提供了小程序解决方案,https://cloud.tencent.com/solution/la。但是对于普通开发者或者小企业的开发人员来说,购买域名,网站备案、部署SSL证书,安装会话服务器。业务逻辑上要使用数据库,缓…

leetcode131. 分割回文串(回溯)

给定一个字符串 s&#xff0c;将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: “aab” 输出: [ [“aa”,“b”], [“a”,“a”,“b”] ] 代码 class Solution {List<List<String>> stringListnew ArrayList…

Cracer渗透-windows基础(系统目录,服务,端口,注册表)

系统目录C:\Windows\system32\config\SAM (保存系统密码) 无法正常修改&#xff0c;可以进入PE系统进行修改&#xff08;先备份在清空&#xff09;利用结束后&#xff0c;再将之前备份的恢复C:\Windows\System32\drivers\hosts&#xff08;域名解析文件&#xff09;hosts欺骗&a…

java--xml文件读取(SAX)

SAX解析原理&#xff1a; 使用Handler去逐个分析遇到的每一个节点 SAX方式解析步奏&#xff1a; 创建xml解析需要的handler&#xff08;parser.parse(file,handler)&#xff09; package com.imooc_xml.sax.handler;import java.util.ArrayList;import org.xml.sax.Attributes…

算法训练营 重编码_编码训练营之后该做什么-以及如何获得成功

算法训练营 重编码by Anthony Morris安东尼莫里斯(Anthony Morris) 编码训练营之后该做什么-以及如何获得成功 (What to do — and how to find success — after a coding bootcamp) It’s almost been two years since I graduated from the Lighthouse Labs Web Developmen…

leetcode860. 柠檬水找零(贪心)

在柠檬水摊上&#xff0c;每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品&#xff0c;&#xff08;按账单 bills 支付的顺序&#xff09;一次购买一杯。 每位顾客只买一杯柠檬水&#xff0c;然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零&#xff0…

linux防火墙开启某端口命令行,linux上防火墙 开启某个端口

linux下防火墙 开启某个端口直接在/etc/sysconfig/iptables中增加一行&#xff1a;-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT注意添加位置:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT-A RH-Fi…

imp命令导入指定表_Sqoop 使用shell命令的各种参数的配置及使用方法

点击上方蓝色字体&#xff0c;选择“设为星标”回复”资源“获取更多资源本文作者&#xff1a;Sheep Sun本文链接&#xff1a;https://www.cnblogs.com/yangxusun9/p/12558683.html大数据技术与架构点击右侧关注&#xff0c;大数据开发领域最强公众号&#xff01;暴走大数据点击…

黑客频繁来袭 关注云计算的安全与保障

本文讲的是 : 黑客频繁来袭 关注云计算的安全与保障 , 【IT168 资讯】日前&#xff0c;虎嗅网遭受网络攻击的事件&#xff0c;引起业内关注。2月27日晚&#xff0c;虎嗅网中断访问&#xff0c;虎嗅网新浪官方微博随即发表声明&#xff0c;表示网站受到恶意攻击&#xff0c;随…

51nod 1100:斜率最大

题目链接 斜率最大点对横坐标必相邻 #include <bits/stdc.h> using namespace std; const int maxn 1e4 100;struct point {int x, y, pos;bool operator < (const point& rhs)const{return x<rhs.x;} } a[maxn]; double xielv(point a, point b) {return (a…

ik分词和jieba分词哪个好_Pubseg:一种单双字串的BiLSTM中文分词工具

中文分词是中文自然语言处理中的重要的步骤&#xff0c;有一个更高精度的中文分词模型会显著提升文档分类、情感预测、社交媒体处理等任务的效果[1]。Pubseg是基于BiLSTM中文分词工具&#xff0c;基于ICWS2005PKU语料训练集训练而成&#xff0c;其优点在于在ICWS2005-PKU语料下…

freecodecamp_freeCodeCamp.org隐私权政策:问题与解答

freecodecampWe take your privacy seriously. And we give you full control over your data.我们把你的隐私当回事。 而且&#xff0c;我们可以完全控制您的数据。 freeCodeCamp doesnt show you ads or sell your data to anyone. Our nonprofit is instead supported by t…

leetcode1029. 两地调度(贪心算法)

公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0]&#xff0c;飞往 B 市的费用为 costs[i][1]。 返回将每个人都飞到某座城市的最低费用&#xff0c;要求每个城市都有 N 人抵达。 示例&#xff1a; 输入&#xff1a;[[10,20],[30,200],[400,50],[30,20]] 输出&…

第一阶段冲刺4

1、我昨天的成就&#xff1a;看相关android开发视频&#xff0c;上网寻找如何实现app动画效果2、遇到什么困难&#xff1a;网上的用的很高级&#xff0c;看不懂别人如何实现的&#xff0c;搬过来实现不了。3、今天的任务&#xff1a;继续实现动画效果。 转载于:https://www.cnb…

小白做淘客店铺新玩法

微信淘客在朋友圈刷了将近两个月。有些大咖赚得盆满钵满&#xff0c;有些小白交了不少学费。有人日入几千几万&#xff0c;也有入不敷出。在此咖妹并没有褒贬之意&#xff0c;只是提醒大家&#xff0c;不光淘客如此&#xff0c;其他项目亦是如此&#xff0c;别人能做成功的项目…

局域网中实现linux与windows文件共享,使用samba组建Linux与Windows局域网实现文件共享...

使用samba&#xff0c;可以组建Windows与Linux的局域网&#xff0c;Linux我用的是Fedora Core 6。Samba软件的最新版本可以从网站免费获得。共可下得5个rpm&#xff0c;分别为&#xff1a;samba-3.0.24-1.i386.rpm&#xff1a;服务器端&#xff1b;samba-client-3.0.24-1.i386.…

python sum函数numpy_如何用numba加速python?

我把写好的markdown导入进来&#xff0c;但是没想到知乎的排版如此感人。如果对知乎排版不满想要看高清清爽版&#xff0c;请移步微信公众号原文 如何用numba加速python&#xff1f;同时欢迎关注前言说道现在最流行的语言&#xff0c;就不得不提python。可是python虽然容易上手…

服务概述

Android中的服务Service&#xff0c;和Activity不同的是不能与用户交互的&#xff0c;不能自己启动&#xff0c;系统的后台运行&#xff0c;当程序退出时&#xff0c;我们没有显示的调用停止服务&#xff0c;那么这个Service就没有结束&#xff0c;它仍然在后台运行。Service和…

[ZJOI2019]麻将

Luogu5279 , LOJ3042题意&#xff1a;给出初始13张手牌&#xff0c;求理论可以和牌的最小轮数的期望&#xff0e;定义和牌为&#xff1a;4句话1对乱将&#xff0c;不能有杠&#xff1b;七对 原始题解-shadowice 写得很好的题解 首先分析期望&#xff1a;\(<--\)所有和牌的步…