javascript - 在调用依赖它的方法时设置 javascript 对象属性

标签 javascript function object properties methods

这是我正在尝试做的一个非常蹩脚的例子。这段代码有效。

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'});

再说一遍,我知道这是一个非常愚蠢的例子,但这个概念有我想使用的特定应用。

最佳答案

只需运行作为参数传入的对象的键并将它们分配给 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')

See demo

关于javascript - 在调用依赖它的方法时设置 javascript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237529/

相关文章:

C++ 如何将一个函数用于另一个变量?

python - 如果我要使用一个变量,我必须总是在我的函数中将它引用为全局变量吗?

javascript - Node.js 中数组和对象的混淆

javascript - Raphael js 拖入 javascript 对象

javascript - 如何在 Firebase 9 中管理 GoogleAuthProvider、signInWithEmailAndPassword 和 setPersistence?

javascript - 输入文本值必须以 W、T 或 Z 开头,其他字符不能在键盘上作为第一个字符

c - 请解释这个C程序的工作原理

javascript - 如何在 JavaScript 中用 <br/> 替换\n?

javascript - window.open() 仍然返回 null

java - 如何将 Observable<String> 转换为 JSON