在javascript中一切皆对象,函数也是对象,这也就说明函数是可以动态添加属性的
function fn(){
console.log("阳光明媚!")
}
//给fn函数动态添加属性
fn.name='今天天气不错!'
fn.love=function(){
console.log('晴空万里!')
}
那么我们接下来是打印函数
console.log(fn); // log 只能打印函数中存储的代码
console.dir(fn); // dir 打印函数对象的成员
我们会发现,console.log()是无法打印出来我们动态添加的属性的,同时也发现,我们添加的fn.name = '今天天气不错!'也没有成功添加到函数的对象成员中,这是什么原因,我们分析一下
上图我们可以知道,函数体代码块和函数对象的存储空间是不同的,同时函数对象中还自带name属性,动态添加了同名name属性,无效;只要改变属性名即可:
----> fn.bbb = ‘今天天气不错!’
可以向函数中添加this.name 这和函数对象中也不冲突
以上就是总结分析了,所以给函数添加属性名时候要注意,不要添加一些系统自带的属性名