用例将函数和属性附加到对象

时间:2017-08-23 16:37:05

标签: javascript

将函数AND属性附加到对象有哪些用例?我还没有在制作中看到过这种情况。这被认为是不好的做法吗?

例如:

var actor = function() {
    console.log('I\'ll be back!');
}

actor.name = 'Arnold Schwarzenegger';

1 个答案:

答案 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

这是该语言的一项功能,如果符合您的目的,您一定要使用它。