简体   繁体   中英

Calling a function from a javascript object

I have been using/calling functions from objects like this:

var object = { 
    fn: function(){ 
        alert('i can see it!'); 
    }
}; 
object.fn(); // it works

but I don't know how to call function from mere {} object.

{
    fn: function() {
        alert('i can\'t see it');
    }
}

fn(); // wont work ?

I want to know why this is not working? Is there a way to make it work?

Your second example is invalid syntax. The {} is interpreted as a block statement with a label and an invalid function because it has no name.

If you wanted to do it inline like that, you'd need something more like this:

({
    fn: function() {
        alert('now i can see it');
    }
}).fn();

Now you're creating an object since the {} can no longer be a block statement, but is instead object literal syntax. Then you're immediately accessing the fn property you defined.

Of course there's little point to this, but it's closer to what you were doing.

fn is inside the blocks and not inside the object. Passing name-value just inside blocks ie {} dont work. Or atleast give some label to the block.

Call it like so: object.fn(); . As @BlueSkies said, the second example will not work, as it is invalid syntax. You can't do that in JavaScript. If you name that object like David said in the comments, then it will work. You can't call a function out of an anonymous object.

Here is an example with the object being called e : http://jsfiddle.net/dhF5k/

Here is the proper syntax to define a "standalone" function (with no wrapper object) :

var fn = function () { ... };
function fn() { ... };

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM