Javascript在函数外获取函数结果
javascript get function results outside of function
$(document)/ready(function(){
if (this == that) {
var myobject = {};
var variable = 55;
function dothisandthat(variable);
alert(JSON.stringify(myobject));
}
})
function dothisandthat(variable) {
//Do something
myobject["first"] = variable + 5;
myobject("second") = variable + 10;
}
我怎么能得到myobject在我的函数中使用,然后再次调用函数外的对象?
如果您只做myobject = {}
或window.myobject = {}
,甚至$.myobject = {}
,它可以全局可用。将它附加到一些全局对象,比如window,或者因为你使用JQuery, JQuery $ object,然后你可以一直使用它。
或者如@Pointy所说,只需将参数添加到方法中:
function dothisandthat(variable, myObject) {
对于面向对象的方法,你通常会告诉对象修改它的内部状态,这同时解决了你的作用域问题。
function MyObject() {
this.first = 0;
this.second = 0;
}
MyObject.prototype.doThisAndThat = function (variable) {
this.first = variable + 5;
this.second = variable + 10;
};
$(document).ready(function () {
//...
var myObject = new MyObject();
myObject.doThisAndThat(55);
alert(JSON.stringify(myObject));
//...
});
但是,如果您想使用功能方法(数据和行为分开存在),则必须使myObject
在doThisAndThat
的作用域中可用。有几种方法可以做到这一点:
将对象作为参数传递给函数。这通常是我喜欢的方式,因为它使依赖关系显式。
请注意,纯函数式方法不会改变传递给函数的对象,但会返回对象的修改副本,因为数据结构通常是不可变的。
依赖闭包。在这种情况下,您只需将
doThisAndThat
函数声明移动到document ready回调中。依赖全局变量或众所周知的对象。大多数情况下,我会避免这种解决方案,因为它使您的依赖项隐藏,并且您的代码更难测试。
相关文章:
- JScript 错误: 无法分配给函数结果
- 显示基于javascript函数结果的HTML代码
- 访问来自另一个函数的函数结果
- 将函数结果传递给Javascript中的另一个函数变量
- NaN作为函数结果而不是必需的整数出现问题
- 更改javascript更改函数结果的颜色
- 从函数结果中检测三角函数
- 根据函数结果使用 JavaScript 更改图像
- 如何返回函数结果并将它们设置为标记的内部 HTML
- JavaScript 如何将函数结果与数组中的值一起传递到同一个函数中
- 用
标记包装 JQuery 函数结果
- 节点函数结果未定义
- 使用Cheerio和Response for Node web scraper,将响应函数结果传递给视图
- 在所有项目javascript中显示函数结果
- 平板电脑友好的悬停工具提示,显示基于javascript函数结果的动态文本
- 在机器时间更改后立即更新Date()函数结果
- 屈服函数结果
- 如何在JavaScript中处理异步函数结果
- 声明和定义全局变量作为函数结果有时有效
- Jquery&函数结果,作为属性名称