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