将函数AND属性附加到对象有哪些用例?我还没有在制作中看到过这种情况。这被认为是不好的做法吗?
例如:
var actor = function() {
console.log('I\'ll be back!');
}
actor.name = 'Arnold Schwarzenegger';
答案 0 :(得分:1)
函数继承自Object。 Function.name
是一个特殊属性,它引用函数的名称。对于匿名函数,您可以将name
属性更改为您想要的任何属性。
.name
是一种好习惯吗?我会说,不。更改.name
属性除了使事情更加混乱之外没有任何其他功能。
将函数AND属性附加到对象
这不是您的代码正在做的事情。 actor
是一个函数,它也是一个对象。您始终可以向除null
以外的任何对象添加属性。实际上,Function.prototype
已经有很多ES6中定义的方法(属性)。
通常,向函数实例添加属性并不是一种不好的做法。从创建静态方法到jQuery(例如$.get
):
function Person(name){
this.name = name;
}
Person.clone = function(p){
return new Person(p.name);
};
var p1 = new Person("Alex"),
p2 = Person.clone(p1); // clone p1
这是该语言的一项功能,如果符合您的目的,您一定要使用它。