首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

二八原则:JavaScript中逗号操作符进阶用法

分析 关于逗号操作符,在MDN上给出的是这样的解释: 逗号操作符  对它的每个操作数求值(从左到右),并返回最后一个操作数的值。...通过逗号操作符获得函数内容 const tem = obj.logName // 2....外部调用修改调用者 同时改变this指向 tem() 本质上我们可以通过逗号操作符修改函数内部this指向的改变,类似于call方法的效果。是不是很神奇!...结尾 其实在babel编译后的js代码中,包括许多源码中都会出现(0,parent.fn)()的方式。 一个小小的逗号操作符竟然能修改this指向,不得不说js真的是无奇不有。...希望这个知识点无论是在源码阅读中,还是面试交(吹)流(水)中都可以帮到大家脱口而出逗号操作符是可以改变函数执行时this指向为全局对象的!。

48520

逗号运算符和逗号表达式

如 3+5,6+8 上式称为逗号表达式。逗号表达式的一般形式为 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2。...整个逗号表达式的值是表达式2的值 例如,上面的逗号表达式“3+5,6+8”的值为14 又如,逗号表达式a=3 * 5,a*4,对此表达式的求解,赋值运算符的优先级别高于逗号运算符,因此应先求解a=3 *...再如,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=35,a4),a+5先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为...20 逗号表达式的一般形式可以扩展为 表达式1,表达式2,表达式3,…………,表达式n 它的值为表达式n的值 逗号运算符是所有运算符中级别最低的,因此,下面两个表达式的作用是不同的: x=(a=3,6...*3) x=a=3,6*a 第一个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18 第二个是逗号表达式,它包括一个赋值表达式和一个算数表达式,x的值为3 其实,逗号表达式无非是把若干个表达式

1.2K20

模拟实现 new 操作符(js)

js 不是基于 class 这种静态类模式,而是基于原型对象的模式。 所以,在 js 中,new 操作符,其实可以通俗的理解成一个辅助工具,用来辅助函数构造出一个新对象。...得先明确这点,才能知道,的确是可以模拟 new 操作符的。...并没有 要模拟实现一个完整的 new 操作符,就还得将它的其他使用场景都考虑进去: 当构造函数有返回值时 判断一个函数是否能够作为构造函数使用 先来考虑第一种: function A() { this.a...——(来自于MDN) 其实这句解释就把 new 操作符的所有职责或者说所有使用场景覆盖了: 用户定义的对象类型 ==> 当构造函数有返回值时 具有构造函数的内置对象 ==> 当前函数可用来作为构造函数,...没错,从引擎角度来看,的确是这样处理,但这些内部属性我们并没有办法看到的啊,那对于我们这些写 js 的来说,如何判断一个函数是否能够作为构造函数呢?靠经验积累?

3.5K10
领券