假设我们有一个函数。
function Rabbit(){
console.log("shiv");
}
现在无需创建此函数的对象,我就可以分配此对象的属性
Rabbit.bark = function(line) {
console.log("name is", line);
};
这是什么意思。这样做会为函数添加一个变量 bark。或者这Rabbit
是否会向对象添加属性,即使我没有使用new
运算符创建对象。
假设我们有一个函数。
function Rabbit(){
console.log("shiv");
}
现在无需创建此函数的对象,我就可以分配此对象的属性
Rabbit.bark = function(line) {
console.log("name is", line);
};
这是什么意思。这样做会为函数添加一个变量 bark。或者这Rabbit
是否会向对象添加属性,即使我没有使用new
运算符创建对象。
JavaScript中的函数只是一个对象,它被称为Function对象。
就像任何其他类型的对象一样,它有自己的构造函数 ( new Function(...)
)、方法 ( apply
, bind
, call
...) 和属性 ( arguments
, caller
, name
...) 。请参阅文档。
您可能熟悉创建这样的函数:
function Rabbit() {
console.log('shiv');
}
那么你应该知道你也可以创建一个这样的函数:
var Rabbit = new Function('console.log("shiv")');
现在,你可能猜到了。如果向 Function 对象添加新属性,只要不覆盖现有属性,该函数仍然可以正常工作。
这样做会添加一个变量 bark 以发挥作用
this
使用Rabbit.bind(object)
这样做向 Rabbit 对象添加了一个属性