【发布时间】:2016-03-03 04:45:43
【问题描述】:
假设我们有一个函数。
function Rabbit(){
console.log("shiv");
}
现在不用创建这个函数的对象,我可以分配这个对象的属性
Rabbit.bark = function(line) {
console.log("name is", line);
};
这是什么意思。这样做会添加一个变量树皮来发挥作用。或者这是否会向Rabbit 对象添加一个属性,即使我没有使用new 运算符创建对象。
【问题讨论】:
-
函数是对象,
bark是对象的属性。bark不是传统方法,但是如果您将new和prototype添加到组合中,那么bark将是一种实例方法。照原样,如果您只是将new添加到上面的代码中,则从.bark到任何实例都没有连接,但是您可以将bark作为静态方法,例如Array.isArray() -
把函数想象成一个对象,类似
{name: "Rabbit", length: 0, body: "code here", arguments: [], this: {}, _closures: {}, call: function call()... }如果你愿意,你可以自己添加新属性。 -
所以我可以说当我调用函数时,例如 console.log(rabbit()) 我正在调用该对象的某些特定属性
-
是的,基本上函数的
.call()方法就是您调用它的方式。足够近。书呆子,您可以在实际调用/使用的规范中阅读到函数内部的内部隐藏属性,而不是用户端端点(实例方法) -
嗨@shivgarg,如果您认为我的回答有帮助,您可以将其标记为已接受的答案,以帮助其他人快速找到它。谢谢。
标签: javascript function