请问下,因为Function是引用类型,那么就可以给他添加自定义的属性,可是添加的这个属性有什么用途呢?
javascript
var sfFunc = function(){}; sfFunc.ename = 'segmentfault';
请问下,因为Function是引用类型,那么就可以给他添加自定义的属性,可是添加的这个属性有什么用途呢?
javascript
var sfFunc = function(){}; sfFunc.ename = 'segmentfault';
var aa = function(){}
var bb = new aa();
bb.name = "cc";
console.log(bb.name) //"cc"
我一直是这么用的,具体含义不太能说明,应该是继承的关系,求大神来说明
函数名就是函数地址,js中都是以对象的形式存在的,其实函数名是函数对象实例化的对象,sfFunc.ename = 'segmentfault';是在其对象动态添加属性
8 回答4.7k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
在javascript中,函数被认为是第一类对象,即函数可以被传递或者可以携带属性或方法。
在函数中使用this,添加的方法,可以被认为是为其添加了私有方法:
(你举例用了对象字面量创建函数,在添加属性这方面跟直接声明函数一致)
私有化属性和方法的作用是保护属性或方法不被随意重写/覆盖:
那么这样有什么用呢?
最常见到的应该就是初始化对象了:
它可以像工厂一样按一个模子,给你制造任意多的固定格式的对象,但是缺陷也很明显,格式太固定,如果想变变花样还不行,这时,就可以配合原型,来制造任意多的期望对象(模拟设计模式:继承)