splice方法的返回值是被删除的数组项目(假如有的话),而你的程序是添加项目,不是删除项目,所以返回值str_splice就是空数组了。
如果程序是这样:
var str_splice = str.splice(1,1,'hh')
那么打印出来的str_splice就是 ['dfg'] 了
默认:执行一次就打印一次,打印什么,怎么打印,就看你怎么写了。另外的情形:
有的编辑器带有运行JS代码并输出结果的功能,加上你自己的console.log(),当它们的运行结果一致的时候,就会出现打印重复的情况。看上去是重复,其实不是:一个结果是console.log()打印的,另外一个是编辑器打印的。这种情形只有当整个代码结果和console.log()一致时才会出现。
原型对象的属性和方法是所有由它生成的对象所共用的,如果某个属性不存在于对象中,但存在于原型对象中,那么console.log时一样可以列出来的。就好比说,你new一个字符串(String)对象,这个新生成的对象中只存在一个length属性,但你一样可以对这个对象使用replace、trim、split等字符串操作方法,因为他们是存在于String对象中,所有子对象都可以直接调用(看起来就跟子对象本身具有的属性和方法一样)