这篇文章给大家分享的是有关javascript中新的操作符如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
相信很多才接触前端的小伙伴甚至工作几年的前端小伙伴对新这个操作符的了解还停留在一知半解的地步,比较模糊。
就比如前不久接触到一个入职两年的前端小伙伴,他告诉我新是用来创建对象的,无可厚非,可能很多人都会这么答!
那这么答到底是错很是对呢?
下面我们全面来讨论一下这个问题:
我们要拿到一个对象,有很多方式,其中最常见的一种便是对象字面量:
var obj={}
但是从语法上来看,这就是一个赋值语句,是把对面字面量赋值给了obj这个变量(这样说或许不是很准确,其实这里是得到了一个对象的实例! !)
很多时候,我们说要创建一个对象,很多小伙伴双手一摸键盘,啪啪几下就敲出了这句代码。
上面说了,这句话其实只是得到了一个对象的实例,那这句代码到底还能不能和创建对象画上等号呢?我们继续往下看。
要拿到一个对象的实例,还有一种和对象字面量等价的做法就是构造函数:
var obj=新对象()
这句代码一敲出来,相信小伙伴们对刚才我说的<代码> obj> 代码只是一个实例对象没有异议了吧!那很多小伙伴又会问了:这不就是新<代码> 代码>了一个新对象出来嘛!
没错,这确实是新增了一个新对象出来,因为javascript之中,万物解释对象,obj是一个对象,而且是通过新运算符得到的,所以说很多小伙伴就肯定的说:新就是用来创建对象的!
这就不难解释很多人把创建对象和实例化对象混为一谈! !
我们在换个思路看看:既然js一切皆为对象,那为什么还需要创建对象呢?本身就是对象,我们何来创建一说?那我们可不可以把这是一种<代码>继承> 代码呢?
说了这么多,相信不少伙伴已经看晕了,但是我们的目的就是一个:理清新是来做继承的而不是所谓的创建对象! !
那继承得到的实例对象有什么特点呢?
- <李>访问构造函数里面的属性李> <>李访问原型链上的属性李>
下面是一段经典的继承,通过这段代码来热热身,好戏马上开始:
函数人(姓名、年龄){ this.name=名字 这一点。年龄=年龄 这一点。性别=& # 39;男& # 39; } Person.prototype。=& # 39;国家汉& # 39; Person.prototype。说=function () { 控制台。日志(“我的名字是$ {this.age}”) } var=new人(& # 39;小明& # 39;,25) console.log (person.name) console.log (person.age) console.log (person.gender) console.log (person.nation) person.say ()
现在我们来解决第一个问题:我们可以通过什么方式实现访问到构造函数里面的属性呢?答案是<代码>调用代码>或<代码>适用代码>
父函数(){ this.name=[& # 39;一个# 39;& # 39;b # 39;】 } 函数子(){ Parent.call(这) } var孩子=new () console.log (child.name)//[& # 39;一个# 39;& # 39;b # 39;】 child.name.push (& # 39; c # 39;) console.log (child.name)//[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;]
第一个问题解决了,那我们又来解决第二个:那又怎么访问原型链上的属性呢?答案是<代码> __proto__ 代码>
现在我们把上面那段热身代码稍加改造,不使用新的来创建实例:
函数人(姓名、年龄){ this.name=名字 这一点。年龄=年龄 这一点。性别=& # 39;男& # 39; } Person.prototype。=& # 39;国家汉& # 39; Person.prototype。说=function () { 控制台。日志(“我的名字是$ {this.age}”) }//var=new人(& # 39;小明& # 39;,25) var人=New(人,& # 39;小明& # 39;,25) console.log (person.name) console.log (person.age) console.log (person.gender) console.log (person.nation) person.say () 函数新(){ var obj={} 构造函数=[].shift.call(参数)//获取参数第一个参数:构造函数//注意:此时的参数参数在转变()方法的截取后只剩下两个元素 obj。__proto__=构造函数。//把原型构造函数的原型赋值给obj对象 构造函数。应用(obj,参数)//改变够着函数指针,指向obj,这是刚才上面说到的访问构造函数里面的属性和方法的方式 返回obj }javascript中新的操作符如何使用