这是我想要做的一个非常蹩脚的例子。这段代码可以使用。
var Love = {
name: 'Johnny',
kiss: function (girl){
alert(this.name + " kissed " + girl );
}
};
Love.name = "Chris";
Love.kiss("Becky");
我首先重新分配了name的属性,然后调用了发送参数的方法
我真正想做的是,在调用方法时使用JSON设置“name”属性。我发誓我已经看到它在某个地方完成了,但我无法弄明白。理想情况下它看起来像这样。
Love.kiss({
name: 'Chris'},
"Becky");
甚至是这样的事情。
var Love = {
Guy: 'Johnny',
Girl: 'Mallory',
kiss: function (){
alert(this.Guy + " kissed " + this.girl);
}
};
Love.kiss({
Guy: 'Chris',
Girl; 'Becky'});
同样,我知道这是一个非常愚蠢的例子,但这个概念有一个我想要使用的特定应用程序。
答案 0 :(得分:2)
你想要将对象文字(而不是JSON!)传递给函数,那么为什么不直接使用呢?
function kiss(obj) {
alert(obj.Guy + " kissed " + obj.Girl);
}
kiss({
Guy: 'Chris',
Girl: 'Becky'
});
为什么要使用Love
对象?
答案 1 :(得分:2)
只需将您传入的对象的键作为参数运行,并将它们分配给this
:
var Love = {
Guy: 'Johnny',
Girl: 'Mallory',
kiss: function(opts) {
for (var k in opts) {
this[k] = opts[k];
}
alert(this.Guy + " kissed " + this.Girl);
}
};
Love.kiss({
Guy: 'Chris',
Girl: 'Becky'
}); // -> alert('Chris kissed Becky')
答案 2 :(得分:0)
var Love = {
Guy: 'Johnny',
Girl: 'Mallory',
kiss: function( data ) {
this.Guy = data.Guy;
this.Girl = data.Girl;
alert(this.Guy + " kissed " + this.Girl);
}
};
Love.kiss({
Guy: 'Chris',
Girl: 'Becky'
});
这是你想要实现的目标吗?
答案 3 :(得分:0)
var Love = {
Guy: 'Johnny',
Girl: 'Mallory',
kiss: function (obj){
// if you want default values you can use ||
this.Guy = obj.Guy || this.Guy;
this.Girl = obj.Girl || this.Girl;
alert(this.Guy + " kissed " + this.Girl);
// or change the code above to the following if you don't want to store new values
var guy = obj.Guy || this.Guy,
girl = obj.Girl || this.Girl;
alert(guy + " kissed " + girl);
}
};
Love.kiss({
Guy: 'Chris',
Girl: 'Becky'
});