var object = {foo: 'bar'};
JavaScript是否有办法确定object.foo
是object
的属性,是object.foo
传递给getSource(object.foo) === object
的函数?换句话说,是否可以编写一个可以执行此操作的函数:
{{1}}
答案 0 :(得分:6)
不,在JavaScript中没有类似的反向引用。传递给函数的是值 - 5
,"foo"
,对象引用等。没有关于该值的信息告诉您来自对象属性的值,更不用说哪个对象的属性。
答案 1 :(得分:2)
对于变量,Javascript使用“按值传递”,换句话说,当object.foo
传递给任何函数时,函数将接收的是'bar'
,而不是对{{1}的引用}:
object.foo
换句话说,一旦您将var object = {foo: 'bar'};
function by_value(v) {
v = v + v
}
document.write(by_value(object.foo)) // Writes 'bar'
传递给任何函数,就无法知道这来自object.foo
但是,如果传递一个对象,该变量的值将是该对象的引用:(注意:这不是真的“传递通过引用“,参见@ tj-crowder的评论:
object
作为一种廉价的解决方法,您可以在对象中存储“引用”:
function as_reference(o) {
o.foo = o.foo + o.foo
}
document.write(by_reference(object)) // Writes 'barbar'
有用吗?