为什么可以';我们在函数体中向函数对象添加属性,就像在javascript中为对象文本添加属性一样吗?
请看下面的代码为什么可以';我们在函数体中向函数对象添加属性,就像在javascript中为对象文本添加属性一样吗?,javascript,javascript-objects,Javascript,Javascript Objects,请看下面的代码 var foo=function(){ 建议1:“价值”; } foo.prop2=“值”; console.log(foo中的“prop1)//logs flase log(foo中的“prop2”)//logs true,因为您使用了分号。你可以用逗号 正确的用法是: var foo = { prop1 : "value", prop2 : "value" } var newFoo = foo() { prop1: 'value' } newFoo.pro
var foo=function(){
建议1:“价值”;
}
foo.prop2=“值”;
console.log(foo中的“prop1)//logs flase
log(foo中的“prop2”)//logs true
,因为您使用了分号。你可以用逗号
正确的用法是:
var foo = {
prop1 : "value",
prop2 : "value"
}
var newFoo = foo()
{ prop1: 'value' }
newFoo.prop2 = "value2";
{ prop1: 'value', prop2: 'value2' }
这是因为javascript中函数的语法不允许这样做。你需要的只是一个普通的物体 是否有不同的语法向函数对象添加属性 直接在它的身体里 对。有。它被称为构造函数
function Foo(){
this.prop1 = "value";
}
var obj = new Foo();
console.log(obj.prop1);
你在用类似于咖啡脚本的东西吗?您忘记了对象上的
{}
首先,我建议您返回一个适当的对象:
var foo = function(){
{ prop1 : "value" };
}
还是不行。这将导致:
foo.prop2 = "value2";
{ [Function] prop2: 'value2' }
foo()
将返回
{ prop1: 'value' }
foo.prop2
将返回value2
它不起作用的原因是您正在添加到实例中。不是函数体(您不能更改代码,只能更改对象)
更好的解决办法是:
var foo = {
prop1 : "value",
prop2 : "value"
}
var newFoo = foo()
{ prop1: 'value' }
newFoo.prop2 = "value2";
{ prop1: 'value', prop2: 'value2' }
正如我们所看到的,你可以修改函数,但是你不能修改它的返回语句,因为这需要软件重写函数,而我们不是天网。。。然而D
另一种修改内容的有趣方式是原型制作:
Function.prototype.prop2 = "value2"
foo()
{ prop1: 'value' }
foo.prop2
'value2'
但是,将
函数.prototype
视为会使每个函数都获得.prop2
属性,在这种情况下没有多大意义。这将要求至少调用一次foo
?真正地它会导致意外的标记:
我理解速度的需要:但是在发布任何内容之前,您应该有一个切实可行的版本。忽略语法错误,您永远不会调用/实例化foo()来定义prop1