想实现:button里的text用o里的text。
var o = {
text: '保存',
buttons: [{
text: o.text
}]
};
这样写,Console 会报错,TypeError: Cannot read property 'text' of undefined。
并且,我想text,button属性一次性全放在对象o里定义,有方法没?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题在于访问
o.text时o的定义还未执行完成 利用 setTimeout 延迟执行赋值操作可以达到效果Javascript只有全局作用域和函数作用域,所以不存在内部对象访问外部对象的问题,实际上你的o.text访问的就是全局作用域下的o.text,由于o此时尚未定义完全,所以o是undefined,自然而然o.text就会抛出Cannot read property 'text' of undefined的错误。这种情形下可以这样处理:
对于评论中 @Dont 的需求,加一个参数即可:
实现同步更新,可以这样操作:
貌似
ECMAScript6的observe方法可以解决这类问题,就不需要强制改为引用值:这样就不会报错了,不知道是不是你想要的
原因如StephenLee所说,正在定义对象期间,怎么访问呢?
所以,这么做即可。
你这个概念是不是o是父类,下面有很多子类button,子类继承父类的属性即可。
你可以写一个inherit函数,把父类所有的属性复制到子类。
关于继承的方法网上也有很多
看到你这个问题和我现在遇到的很像,请斑竹看下怎么办:
如下是一个外部js文件diagram.js:
(function($){
window.jUI ={};
下面是个html文件diagram.html:
希望打印出svg的name值,上面js文件中显示的是undefined,也就是说这样子是得不到这个svg对象的,该怎么办呢?
this引用
};