关于构造函数时候,写在函数体外面是不是不可行?

image.png
1、这里通过aa.name的方式无法添加到function aa里面嘛?为啥控制台打出来里面啥都没?
2、控制台输出name时候是啥也没,也不是nan/undefine之类的,所以是无意义嘛?
3、打印aa.name时候咋出来了aa,而不是'第一'?
理论知识学的很浅,上手就有点迷茫,感谢大哥帮忙指导小弟,帮我恶补一下,非常感谢。

阅读 1.5k
3 个回答

1、console.log打印函数,会调用函数的toString,这会返回函数的函数体定义,如果要查看函数的属性,可以使用console.dir

2、控制台输出name,你没有这个变量,所以找到了全局对象window上的name,它默认是空字符串,如果在严格模式下,这这句代码会报错

3、函数的name属性只可读不可修改

可以添加其它属性,设计如此,为何要纠结这个,还有,一般不会在函数上扩展属性的,都是原型链

  1. aa 是一个 function ,所以 console.log 很可能不会打印的它的任何属性
  2. ...
  3. 这种有名字的 function 的 name 属性就是函数名,是只读的,不能更改。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题