首先,事情从一个面试问题开始
script function A(){ this . name=' ';this.age=18} var a1=新A();A1.name=' Nicholas刁';var a2=a1a2.name=' blueconsole . log(a1 . name);//变成了蓝色。var str1=' Nicholas Dickvar str2=str1str2='蓝色';console . log(ST R1);//没有变,还是尼古拉斯/剧本。简单来说,a2=a1a2.name=xxx//a1.name将更改str2=str1str2=xxx//str1不会改变。欢迎觉得废话太多的同学翻到最后看看“技术流讲解”,那我们就开始吧
套用一句俗语:“我知道真相,但弦为什么不变?”JavaScript作为一种高级语言,没有指针的概念,但总是被这个困扰。今天,我想试着让大家理解这个概念。要想了解这件事,请先了解一件很简单的事情:
假设你有一个女朋友叫蒙奇,她喜欢戴黄色的帽子。你给她买了一顶红帽子。蒙奇戴什么颜色的帽子?
红色
假设你有一个喜欢戴黄色帽子的女朋友叫蒙奇,你直接换成了一个喜欢戴红色帽子的女朋友。蒙奇戴什么颜色的帽子?
甲:还是黄色,没变
如果我们理解了上面那个沾花惹草的人和他带帽子的女朋友的问题,那么问题就变得很简单了,再用代码来表达:
//情景一:换帽子。女朋友=蒙奇;你,女朋友和帽子=红色;控制台日志(蒙奇。帽子);//红色//情景二:换女朋友。女朋友=蒙奇;你。女朋友=安怡;控制台日志(蒙奇。帽子);//黄色,没变。简单来说,你换了女朋友。这是别人的帽子,对吗
要彻底理解问题,步骤1/2:
让我们把这段已经很混乱的关系变得更加混乱[捂住脸]
假设张三和李四都找到了同一个女朋友,张三给她买了一顶帽子。李四的女朋友换帽子了吗?
甲:变了
假设张三和李四找到了同一个女朋友,但是张三受不了,他又找到了新的女朋友。请问:这和李四女朋友的帽子有关吗?
这有什么关系
上述混沌关系,由程序表示为:
//情况1。换帽子张三女朋友=李四女朋友;//传奇引语:第一次看到张三的女朋友谁能把出轨讲得这么清新脱俗。帽子=绿帽;(李四的女朋友。帽子);//已更改,绿色//情况2。毛与戴帽子的张三的女朋友=李四的女朋友;张三的女朋友=新女朋友;(李四的女朋友。帽子);//我不知道什么颜色,但这并没有成为彻底理解问题的第二步:
它是直接编码的。请参见注释以获得解释
//情况一:帽子var张三女友=新女友();//太方便了。有没有var李四女朋友=张三女朋友?//再次引用张三的女朋友。帽子=红色;(李四的女朋友。帽子);//红色,变了//情况二:和帽子有头发关系。var张三女友=新女友();Var李四女朋友=张三女朋友;张三的女朋友=另一个;(李四的女朋友。帽子);//没有变。这与帽子无关。所以,现在请跟我来,再看一遍上面的问题。
//案例1var a1=新A();var a2=a1//注意:这个时候,a1和a2是一回事,引用一下,你知道a2.name=' blue//你给女朋友买了顶新帽子console . log(a1 . name);//她的帽子是Blue//case 2 var str 1=' AAA ';var str2=str1//注意:这个时候,str1和str2也是一回事,也是指str2='蓝色';//你直接换了女朋友console . log(str 1);//你前女友没什么变化。人老了就会很啰嗦。直接上图就好了:
场景1: a2。名称='蓝色'
场景2: str 2='蓝色'
=======================================.
1.指针:变量或属性指向的对象
2.赋值:意味着改变变量或属性的方向
一起使用:
a1=a2a2.name=' blue//将a2.name改为“蓝色”;但是a1和a2仍然指向同一个对象,所以:a1 . name=' blue ' ST R1=ST R2;str2='蓝色';//将str2指针更改为“蓝色”;此时,str1和str2不再指向同一个对象,因此:str1保持不变。以上是边肖介绍的JavaScript面试问题(指针、帽子、女朋友),希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!