【问题标题】:How to Change object property in params JavaScript如何在参数 JavaScript 中更改对象属性
【发布时间】:2015-02-05 18:12:35
【问题描述】:

示例: 我需要像对象一样创建函数,如果我有简单的对象,我可以像这样得到它:

myObject = function(){
   alert('tada');
}

但我需要像这样实现这个函数或其他参数内部对象:

myObject = {
   value : function(){
      alert('tada!');
   }
};

并且只能通过myObject()调用这个函数,而不是myObject.value(),谢谢

【问题讨论】:

  • jQuery 是具有方法的函数的一个很好的例子,这听起来像你想要的。
  • 如果有更多像value 这样的多个参数,你打算如何调用它们?我的意思是myObject() 宁愿作为构造函数工作。访问say some_other_value_func 怎么样?
  • 你也可以查看 Object.defineProperty(myObject, "valueOf", {value: fn})
  • 问题出在我对 js 的不良认识中,如果我写 myObject = { param1: function(){tada!!}},然后 myObject = 'anyParam',myObject 将得到'anyParam',并且 myObject.param1() 将返回'tada',奇怪但 js 不会替换对象,当我稍后分配它时。我以前从未在其他语言中看到过这种做法

标签: javascript object param


【解决方案1】:

函数是 JavaScript 中的对象,因此您可以向函数添加属性。没关系:

var obj = function() {
    alert("Hello, world");
}
obj.val = "42";
obj() //alerts "hello, world"

【讨论】:

  • 我需要在对象中使用哈希数组构造,obj.param 工作,但我需要其他解决方案,thx
【解决方案2】:
MyClass = function(){
  return {
   value : function(){
      alert('tada!');
   }
  }
});

instance = MyClass();
instance.value();

或者更恰当

// Define a class like this
function MyClass(name){
    this.name = name;
}

MyClass.prototype.sayHi = function(){
 alert("hi " + this.name);
}

var instance = new MyClass("mike");
instance.sayHi();

【讨论】:

    【解决方案3】:
    obj = {
       myFunc: function(){
          alert('tada');
       }
    };
    obj = obj.myFunc();
    

    这对我有用!

    【讨论】:

    • 尝试再次调用它...
    【解决方案4】:

    myObject = (function() {
      return {
        value: function() {
          alert('tada!');
        }
        `enter code here`
      }
    })();
    
    myObject.value();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2020-11-24
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多