假设我们有一个函数。
function Rabbit(){
console.log("shiv");
}
现在,无需创建该函数的对象,我就可以分配该对象的属性
Rabbit.bark = function(line) {
console.log("name is", line);
};
这是什么意思。这样做会添加一个变量 bark 到函数中。或者这是否添加了一个属性Rabbit
对象,即使我没有使用创建对象new
操作员。
Function在 JavaScript 中只是一个对象,它被称为Function https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function object.
就像任何其他类型的对象一样,它有自己的构造函数(new Function(...)
), 方法 (apply
, bind
, call
...)和属性(arguments
, caller
, name
...) . 查看文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function.
您可能熟悉创建这样的函数:
function Rabbit() {
console.log('shiv');
}
那么你应该知道你还可以创建一个像这样的函数:
var Rabbit = new Function('console.log("shiv")');
现在,你可能猜到了。如果你给一个Function对象添加一个新的属性,只要你不要覆盖现有的,功能仍然运行得很好。
这样做添加一个变量 bark 到函数中
- 不,函数有自己的闭包,向函数添加变量的唯一方法是将其绑定到
this
对象使用Rabbit.bind(object)
这样做为 Rabbit 对象添加了一个属性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)