2014-12-08 5 views
3

Пример: Мне нужно создать функцию, как объект, если у меня есть простой объект, я могу получить его, как это:Как изменить свойство объекта в Params JavaScript

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

, но мне нужно реализовать эту функцию или другой парам внутренний объект, как это:

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

и вызывать эту функцию только myObject(), не myObject.value(), ТНХ

+0

JQuery является хорошим примером функции, которая имеет методы, которая звучит как то, что вы хотите. – dandavis

+0

Если есть несколько параметров, таких как 'value', как вы планируете их называть? Я имею в виду, что 'myObject()' скорее будет работать как конструктор. Как насчет доступа к 'some_other_value_func'? – SachinGutte

+0

вы также можете заглянуть в Object.defineProperty (myObject, "valueOf", {value: fn}) – dandavis

ответ

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" 
+0

Мне нужно использовать конструкцию хеш-массива в объекте, obj.param, но мне нужно другое решение, thx –

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

эта работа для меня!

+0

Попробуйте называть его второй раз ... – RobG

0

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

 
myObject.value();

Смежные вопросы