如何使用JavaScript循环遍历数组中的所有条目?
我以为它是这样的:
forEach(instance in theArray)
Run Code Online (Sandbox Code Playgroud)
theArray
我的阵列在哪里,但这似乎是不正确的.
我有一个构造函数,它注册一个事件处理程序:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', function () {
alert(this.data);
});
}
// Mock transport object
var transport = {
on: function(event, callback) {
setTimeout(callback, 1000);
}
};
// called as
var obj = new MyConstructor('foo', transport);
Run Code Online (Sandbox Code Playgroud)
但是,我无法data
在回调中访问已创建对象的属性.它看起来this
并不是指创建的对象,而是指另一个对象.
我还尝试使用对象方法而不是匿名函数:
function MyConstructor(data, transport) {
this.data = data;
transport.on('data', this.alert);
}
MyConstructor.prototype.alert = function() {
alert(this.name);
};
Run Code Online (Sandbox Code Playgroud)
但它表现出同样的问题.
如何访问正确的对象?
这是我的对象文字:
var obj = {key1: value1, key2: value2};
Run Code Online (Sandbox Code Playgroud)
如何添加{key3: value3}
到对象?
有没有办法在JavaScript中使用以下内容?
var foo = {
a: 5,
b: 6,
c: this.a + this.b // Doesn't work
};
Run Code Online (Sandbox Code Playgroud)
在当前形式中,此代码显然会抛出引用错误,因为this
没有引用foo
.但是,是有什么办法对早些时候宣布的其他属性在对象文本的属性值依赖?
我有一个Bash脚本需要知道它的完整路径.我试图找到一种广泛兼容的方式来做到这一点,而不会结束相对或时髦的路径.我只需要支持Bash,而不是sh,csh等.
到目前为止我发现了什么:
从地址中获取Bash脚本的源目录的接受答案是获取脚本的路径dirname $0
,这很好,但可能会返回相对路径(如.
),如果要更改目录中的目录,这是一个问题脚本并使路径仍指向脚本的目录.不过,dirname
将成为这个难题的一部分.
对OS X的Bash脚本绝对路径 的接受答案(特定于OS X,但答案无论如何)都会给出一个函数,该函数将测试是否$0
看起来相对,如果是,则会预先挂起$PWD
.但是结果仍然可以包含相对位(虽然总体来说它是绝对的) - 例如,如果脚本t
在目录中/usr/bin
并且你进入/usr
并且你输入bin/../bin/t
它来运行它(是的,那是复杂的),你最终会得到/usr/bin/../bin
as脚本的目录路径.哪个有效,但......
此页面上的readlink
解决方案如下所示:
# Absolute path to this script. /home/user/bin/foo.sh
SCRIPT=$(readlink -f $0)
# Absolute path this script is in. /home/user/bin
SCRIPTPATH=`dirname $SCRIPT`
Run Code Online (Sandbox Code Playgroud)
但是readlink
不是POSIX,显然解决方案依赖于GNU readlink
,其中BSD由于某种原因无法工作(我无法访问类似BSD的系统进行检查).
所以,各种方式,但他们都有他们的警告.
什么是更好的方式?"更好"的意思是:
我正在尝试理解依赖注射(DI),并再一次失败了.这看起来很傻.我的代码从来都不是一团糟; 我几乎没有编写虚函数和接口(虽然我曾经在蓝月亮中做过)并且我的所有配置都被神奇地序列化为使用json.net的类(有时使用XML序列化器).
我不太明白它解决了什么问题.它看起来像是一种说法:"嗨.当你遇到这个函数时,返回一个这种类型的对象并使用这些参数/数据."
但是......为什么我会用它呢?注意我从来不需要使用object
,但我明白这是什么.
在构建网站或桌面应用程序时,哪些人会使用DI?我可以轻松地提出案例,为什么有人可能想在游戏中使用接口/虚拟功能,但在非游戏代码中使用它非常罕见(很少见,我记不起单个实例).
有人可以用简单的话向我解释什么是?:
(有条件的,"三元")运算符以及如何使用它?
我遇到了以下几行
hsb.s = max != 0 ? 255 * delta / max : 0;
Run Code Online (Sandbox Code Playgroud)
什么的?
,并:
在这方面是什么意思?
我正在使用jQuery Mobile构建移动Web应用程序,我想检查是否选中了复选框.这是我的代码.
<script type=text/javascript>
function validate(){
if (remember.checked == 1){
alert("checked") ;
} else {
alert("You didn't check it! Let me check it for you.")
}
}
</script>
<input id="remember" name="remember" type="checkbox" onclick="validate()" />
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,它不会执行它.
请帮忙 !
----编辑-----这就是我现在所拥有的.
<DIV data-role="content" data-theme="g">
<DIV class=ui-grid-g-login>
<FORM method=post action=[$=PROBE(266)/] data-theme="C">
<P>~DATA_ERROR~</P>
<div id="mail" data-role="fieldcontain">
<label for="mail">Email:*</label>
<input id="mail" name="mail" type="email" />
</div>
<div id="pass" data-role="fieldcontain">
<label for="pass">Paswoord:*</label>
<input id="pass" name="pass" type="password" />
</div>
<div id="remember" data-role="fieldcontain">
<label for="remember">Onthoud mij</label>
<input id="remember" name="remember" type="checkbox" …
Run Code Online (Sandbox Code Playgroud)