为什么可以't我从对象文字内部引用对象文字
Why can't I reference an object literal from inside an object literal?
不确定这是否可能,或者我做错了。我试图让一个对象文字引用它自己的属性之一,它是另一个对象的文字。我一直收到一个错误,说它是未定义的:
var MyObject = {
init: function(){
this.elements.buttons.click(function(){
alert('hit');
});
},
elements: {
buttons: $('button')
}
}
我做错了什么?
更新:main.js调用init按需初始化,这可能会破坏作用域——
function executeFunctionByName(functionName, context /*, args */) {
var args = [].slice.call(arguments).splice(2);
var namespaces = functionName.split(".");
var func = namespaces.pop();
for(var i = 0; i < namespaces.length; i++) {
context = context[namespaces[i]];
}
return context[func].apply(this, args);
}
$(document).ready(function(){
// invoke init() for any element that requests it
$('[data-page]').each(function(i, p){
var page = 'APP.MODEL.' + $(p).data('page') + '.init';
executeFunctionByName(page, window)
});
});
如果直接调用该函数而不经过MyObject
,则this
将是未定义的。用MyObject
替换this
,它应该可以工作。
这将不起作用,因为this
将被定义为window
:
var MyObject = {
// init: ...
}
var init = MyObject.init;
init();
请参见3。输入函数代码:;这个";关键词工作?
如果你想继续使用this
,你可以使用Function.protype.call()或Function.protype.apply(),比如
var MyObject = {
// init: ...
}
var init = MyObject.init;
init.call(MyObject);
相关文章:
- 是否可以将字符串转换为文字对象数组
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- 如何检查文字对象是否在 Javascript 数组中
- Javascript解析序列化的Groovy映射到JS文字对象
- asp.net 文字对象传递给 JavaScript
- 文字对象和jquery选择器DRY
- 将文字/对象/类传递给具有数千次调用的函数的内存含义
- Javascript 文字对象和单例模式
- 如何在 PHP 中将 JavaScript 文字对象转换为 Json 对象
- 将文字对象转换为对象'的属性
- 文字对象中的元素
- 将开关大小写(在c++中)替换为javascript中的文字对象
- 使用函数式编程过滤文字对象
- 关于文字对象,也许还有自动执行函数
- 如何访问“参数”来自闭包的外部函数的文字对象
- 关于文字对象语法的限制
- 在文字对象中创建属性
- JavaScript异步调用文字对象函数
- 文字对象和函数构造函数
- 奇怪的行为和使用Object的多个实例.在文字对象上创建