javascript向函数添加属性
假设我们有一个函数javascript向函数添加属性,javascript,function,Javascript,Function,假设我们有一个函数 function Rabbit(){ console.log("shiv"); } 现在,无需创建此函数的对象,我就可以指定此对象的属性 Rabbit.bark = function(line) { console.log("name is", line); }; 这意味着什么。这样做可以为函数添加一个变量。或者,即使我没有使用new操作符创建对象,也会向Rabbit对象添加属性 这意味着什么。这样做可以为函数添加一个变量。或者 这为Rabbit对象添加了一个属性
function Rabbit(){
console.log("shiv");
}
现在,无需创建此函数的对象,我就可以指定此对象的属性
Rabbit.bark = function(line) {
console.log("name is", line);
};
这意味着什么。这样做可以为函数添加一个变量。或者,即使我没有使用new
操作符创建对象,也会向Rabbit
对象添加属性
这意味着什么。这样做可以为函数添加一个变量。或者
这为Rabbit对象添加了一个属性
是否向函数中添加一个变量-No
或者在兔子对象中添加属性-Yes
树皮是类型对象的属性
即使我没有使用新操作符创建对象
Rabit已经是(类型)的对象。您不是在创建此对象的实例,只是在向其添加属性。JavaScript中的函数只是一个对象,称为对象 和任何其他类型的对象一样,它有自己的构造函数(
新函数(…)
),方法(应用
,绑定
,调用
…)和属性(参数
,调用方
,名称
…)
您可能熟悉创建这样的函数:
function Rabbit() {
console.log('shiv');
}
var Rabbit = new Function('console.log("shiv")');
然后您应该知道,您还可以创建如下函数:
function Rabbit() {
console.log('shiv');
}
var Rabbit = new Function('console.log("shiv")');
现在,你可能猜出来了。如果向函数对象添加新属性,只要不覆盖现有属性,函数仍能正常工作
是否向函数添加一个变量
- 不,函数有自己的闭包,向函数添加变量的唯一方法是使用
Rabbit.bind(object)
- 嗯,既然“兔子对象”只是一个对象,是的
bark
是对象的属性<但是,code>bark并不是一种传统的方法,但是如果您将new
和prototype
添加到混合中,那么bark
将是一种实例方法。实际上,如果您只是简单地向上面的代码添加新的,那么.bark
与任何实例都没有联系,但是您可以将bark
作为一个静态方法,比如Array.isArray()
将函数看作一个对象,类似于{name:“Rabbit”,长度:0,主体:“code here”,参数:[],这:{},_closures:{},call:function call()…}
如果您愿意,您可以自己添加新属性。所以我可以说,当我调用函数例如console.log(rabbit())时,我正在调用该对象的某些特定属性是的,基本上函数的.call()
方法就是您调用它的方式。够近了。书呆子,你可以在你实际调用/使用的规范中阅读函数内部隐藏的属性,而不是userland端点(实例方法)Hi@shivgarg,如果你认为我的答案有帮助,你可以将它标记为可接受的答案,帮助其他人快速找到它。谢谢。我看不出显示新函数
案例的目的。@torazaburo只是想强调兔子
只是一个由新函数
创建的对象。我编辑了该示例,使其与问题更具语义关联。如果我创建兔子的实例,我将无法访问属性“树皮”。有什么问题……有人能解释一下吗?函数Rabbit(){console.log(“shiv”);}Rabbit.bark=函数(行){console.log(“name is”,行);};var m=新兔子();m、 树皮(“试验”);VM135:1未捕获类型错误:m.bark不是1:3处的函数