如何在 JavaScript 的参数中更改对象属性

3

例子: 我需要创建一个类似于对象的函数,如果我有一个简单的对象,我可以像这样获取它:

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

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

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

请只通过 myObject() 调用此函数,而不是通过 myObject.value(),谢谢。


jQuery是一个很好的例子,它具有方法,听起来就像你想要的。 - dandavis
如果有多个像value这样的参数,您打算如何调用它们?我的意思是myObject()最好作为构造函数工作。那么访问some_other_value_func怎么办? - SachinGutte
你可以尝试使用Object.defineProperty(myObject, "valueOf", {value: fn})。 - dandavis
问题出在我的JS知识不够好,如果我写了myObject = { param1: function(){tada!!}},然后稍后又写了myObject = 'anyParam',那么myObject将会得到'anyParam',而myObject.param1()将会返回'tada'。这很奇怪,但是JS并没有替换对象,当我稍后赋值时。我以前从未见过其他语言中出现这种情况。 - Maxim Pogorelov
4个回答

0

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

myObject.value();


0
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();

0

在JavaScript中,函数是对象,因此您可以向函数添加属性。这样做没问题:

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

我需要在对象中使用哈希数组构造,obj.param可以工作,但我需要其他的解决方案,谢谢。 - Maxim Pogorelov

0
obj = {
   myFunc: function(){
      alert('tada');
   }
};
obj = obj.myFunc();

这对我有用!


尝试第二次调用它... - RobG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接