javascript将属性添加到功能

时间:2016-03-03 04:45:43

标签: javascript function

让我们说我们有一个功能。

function Rabbit(){
  console.log("shiv");
}

现在没有创建此函数的对象,我可以分配此对象的属性

Rabbit.bark = function(line) {
 console.log("name is", line);
};

这是什么意思。这样做可以添加变量bark来实现功能。或者这会向Rabbit对象添加属性,即使我没有使用new运算符创建对象。

2 个答案:

答案 0 :(得分:2)

  这是什么意思。这样做可以添加变量bark来实现功能。或者做   这为Rabbit对象添加了一个属性

这样做可以添加变量bark来实现 -

或者这样做为Rabbit对象添加了一个属性 -

bark是Function

类型的对象的属性
  

即使我没有使用new运算符

创建对象

Rabit已经是一个对象(Function类型)。您没有创建此对象的实例,只是您要向其添加属性。

答案 1 :(得分:2)

JavaScript中的

函数只是一个对象,它被称为Function对象。

就像任何其他类型的对象一样,它有自己的构造函数(new Function(...)),方法(applybindcall ...)和属性(argumentscallername ...)。 See the document

您可能熟悉创建这样的函数:

function Rabbit() {
    console.log('shiv');
}

然后你应该知道你也可以创建这样的函数:

var Rabbit = new Function('console.log("shiv")');

现在,你可能会猜到它。如果您向Function对象添加新属性,只要您不覆盖现有属性,该函数仍然可以正常工作。

  

这样做为函数添加变量bark

  • 不,函数有自己的闭包,向函数添加变量的唯一方法是使用this
  • 将其绑定到Rabbit.bind(object)对象
  

这样做为Rabbit对象添加了一个属性

  • 好吧,因为" Rabbit对象"只是一个对象,是的。