每次调用对象时如何自动运行函数?
How can I run function automatically when calling object at each time?
每次调用对象时如何自动运行函数?
我有以下对象:
var myObject = {
main: function(e) {
//main
},
x: 1,
y: 2,
another: function(e) {
//another
}
}
是否可以实现以下功能?
通话中
myObject();
会调用 main
方法。
但是打电话
myObject().another();
会调用 another
方法。
仅使用 myObecjt() 而不是 myObecjt.main()
如果我理解正确,你要找的代码结构如下:
var myObject = (function () {
var t = {};
t.main = function() {
console.log("main");
};
t.another = function () {
console.log("another");
};
t.main();
return t;
});
这将产生以下功能:
调用 myObject();
将调用 main
方法。
调用 myObject().another();
将同时调用 main
和 another
方法。
如果您正在寻找 jquery 之类的链接,请尝试这样的事情
function myObject(){
if(this == window){
return new myObject();
}
//whatever the main method does
return this;
}
myObject.prototype.x = 1;
myObject.prototype.y = 2;
myObject.prototype.another = function(){
//whatever the another method does
return this;
}
像这样的东西,建议研究方法链和原型继承,以便干净地应用它。
或者更简单的东西
function myObject(){
//whatever the main method does
return myObject;
}
myObject.x = 1;
myObject.y = 2;
myObject.another = function(){
//whatever the another method does
return myObject;//method chaining may continue
}
每次调用对象时如何自动运行函数?
我有以下对象:
var myObject = {
main: function(e) {
//main
},
x: 1,
y: 2,
another: function(e) {
//another
}
}
是否可以实现以下功能?
通话中
myObject();
会调用 main
方法。
但是打电话
myObject().another();
会调用 another
方法。
仅使用 myObecjt() 而不是 myObecjt.main()
如果我理解正确,你要找的代码结构如下:
var myObject = (function () {
var t = {};
t.main = function() {
console.log("main");
};
t.another = function () {
console.log("another");
};
t.main();
return t;
});
这将产生以下功能:
调用 myObject();
将调用 main
方法。
调用 myObject().another();
将同时调用 main
和 another
方法。
如果您正在寻找 jquery 之类的链接,请尝试这样的事情
function myObject(){
if(this == window){
return new myObject();
}
//whatever the main method does
return this;
}
myObject.prototype.x = 1;
myObject.prototype.y = 2;
myObject.prototype.another = function(){
//whatever the another method does
return this;
}
像这样的东西,建议研究方法链和原型继承,以便干净地应用它。
或者更简单的东西
function myObject(){
//whatever the main method does
return myObject;
}
myObject.x = 1;
myObject.y = 2;
myObject.another = function(){
//whatever the another method does
return myObject;//method chaining may continue
}