Javascript 这是命名约定还是函数声明
我正在学习javascript,现在开始学习对象和基本函数。我遇到了这种类型的代码,想知道这到底是什么Javascript 这是命名约定还是函数声明,javascript,function,Javascript,Function,我正在学习javascript,现在开始学习对象和基本函数。我遇到了这种类型的代码,想知道这到底是什么 var stringFunction = function(){}; stringFunction.test1 = function(){ console.log("Test 1"); } test1是stringFunction的一部分还是仅仅是一个命名约定。提前感谢在JavaScript中,每个函数都是一个函数对象。看见在示例中,代码在对象stringFunction上创建属性“t
var stringFunction = function(){};
stringFunction.test1 = function(){
console.log("Test 1");
}
test1是stringFunction的一部分还是仅仅是一个命名约定。提前感谢在JavaScript中,每个函数都是一个函数对象。看见在示例中,代码在对象stringFunction上创建属性“test1”。新属性是它本身的函数对象。
函数
实例在Javascript中有点“怪异”,因为它们是对象,但它们的类型是“函数”
,而不是“对象”
但是,它们可以使用语法f.x
或f[“x”]
添加和访问属性。您的代码只是将一个属性添加到函数
对象中(该属性的值也是一个函数,但这是不相关的)。这里test1()
是stringFunction
变量的属性(函数类型)。
因此,您在函数对象中定义了一个函数。
您可以通过调用stringFunction.test1()来使用它代码>因为您可以调用外部函数:stringFunction()代码>
输出:
测试字符串功能
测试1
两者都不是,这是一个属性定义。JS中的函数是对象,但在为stringFunction执行typeof时,它将作为函数而不是object@Srikanth:是的。。。他们很“怪异”。但如果奇怪和特殊情况让你感到害怕,那么Javascript可能不是你的语言:-d可能是的重复,我们仍然可以调用stringFunction(),它将像以前一样工作?@Mohit Bhardwaj是的。这是两个不同的可用对象。谢谢@davidxxx:)哦,好的,但是当你控制台记录一个对象时,你将能够看到与该对象相关的所有属性和其他原型,而对于这个实例,我只能看到与属性相关联的函数。@Srikanth:实际上,函数
实例非常奇怪。。。例如Object.keys(f)
将返回您添加的所有属性的名称(但不是预定义属性,例如“name”
)。另一个奇怪之处是,例如f.length
返回0,而不是未定义的
,并且无法设置。
var stringFunction = function(){console.log("Test stringFunction")};
stringFunction.test1 = function(){
console.log("Test 1");
}
stringFunction();
stringFunction.test1();