Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript oojs:对象中的这个值_Javascript_Oop - Fatal编程技术网

Javascript oojs:对象中的这个值

Javascript oojs:对象中的这个值,javascript,oop,Javascript,Oop,我写JavaScript已经有一段时间了。我突然想到我没有使用过这个。为每个调用编写完整的命名是非常烦人和耗时的 在上面的代码中,是这个跨浏览器兼容的实现,或者有人知道我是否错误地使用了它吗?是的,就是跨浏览器/平台。这是ECMAScript的一部分,因此它将在所有Javascript实现中工作 请注意,此可能并不总是指您希望它指向的对象。考虑: var func = a.b.c; func(); 调用a.b.c引用的函数,但此将引用窗口对象或为null而不是a.b 另一个例子: setTim

我写JavaScript已经有一段时间了。我突然想到我没有使用过
这个
。为每个调用编写完整的命名是非常烦人和耗时的


在上面的代码中,是
这个
跨浏览器兼容的实现,或者有人知道我是否错误地使用了它吗?

是的,就是跨浏览器/平台。这是ECMAScript的一部分,因此它将在所有Javascript实现中工作

请注意,
可能并不总是指您希望它指向的对象。考虑:

var func = a.b.c;
func();
调用
a.b.c
引用的函数,但
将引用
窗口
对象或为
null
而不是
a.b

另一个例子:

setTimeout(a.init, 1000); // Throws an error and fails after 1 second
但是:


但是我不明白为什么要声明var func=a.b.c,唯一的原因是对a.b.c()的简短引用吗?(对于这种OO,php似乎要健壮得多)@John Yeah,或者作为一个例子:)当函数作为回调传递时,问题会更频繁地出现,就像类似的
setTimeout
example.Ahh。。我懂了。谢谢你的提示,非常感谢。真的开始进入JS。。参加了一些关于模块化js的讨论,期待着未来几年
setTimeout(a.init, 1000); // Throws an error and fails after 1 second
setTimeout(a.init.bind(a), 1000); // Works as expected and
setTimeout(function(){ a.init(); }, 1000); // Works as expected