在函数中引用对象文字是不是很麻烦?似乎工作正常,但我想确保没有其他含义。
这是我正在谈论的示例:
代替:
var obj = {
key1: "it",
key2: function(){return this.key1 + " works!"}
};
alert(obj.key2());
使用:
var obj = {
key1: "it",
key2: function(){return obj.key1 + " works!"}
};
alert(obj.key2());
两者都有问题。
var obj = {
key1: "it",
key2: function(){ return this.key1 + " works!" }
};
var func = obj.key2;
alert(func()); // error
当func
不叫为的方法obj
,this
可以参考别的东西(在这里:全局对象“
window
“)。
var obj = {
key1: "it",
key2: function(){ return obj.key1 + " works!" }
};
var newref = obj;
obj = { key1: "something else"; };
alert(newref.key2()); // "something else works"
在这里,我们从另一个引用访问该对象,尽管obj
函数中的可能现在指向其他某个对象。
因此,您将不得不选择哪种情况更有可能。如果您真的想使其安全,请防止obj
被交换:
// ES6 - use `const`:
const obj = {
key1: "it",
key2: function(){ return obj.key1 + " works always!" }
};
// ES5: use a closure where the `obj` is stored in a local-scoped variable:
var obj = (function(){
var local = {
key1: "it",
key2: function(){ return local.key1 + " works always!" }
};
return local;
})();
或者您bind()
将函数传递给对象:
var obj = {
key1: "it",
key2: function(){ return this.key1 + " works always!" }
}
obj.key2 = obj.key2.bind(obj);
问题内容: jshashtable状态: JavaScript的内置对象的确使用方括号表示属性来提供哈希表功能,前提是您的键是字符串或数字: 据我所知,键只是字符串,(因为数字无论如何都被强制转换为字符串)。我只想检查一下,确保上面所说的是假的(因为键不能是数字)。 ECMA标准是否对此做了任何说明。 还是实现特定于浏览器? 问题答案: JavaScript的内置对象确实使用属性的方括号表示法提供
问题内容: 我有一个对象: 我正在寻找一种本机方法,该方法类似于以下方法: JavaScript是否对对象具有这样的功能?(我想为Node.JS使用它,所以我不在乎跨浏览器的问题。) 问题答案: 该对象没有本地对象,但是如何处理: 但是您可以使用以下命令轻松地遍历对象: 更新资料 很多人提到,以前的方法不会返回新对象,而是对对象本身进行操作。为此,我想添加另一个解决方案,该解决方案返回一个新对象并
问题内容: 好的,所以我正在研究Nodes中的一个项目,并且遇到了对象字面量键中的一个小问题,我有以下设置: 好的,你们中的很多人都会看这个,并认为它没问题,但是编译器不断告诉我,我缺少一个(冒号),但不是,好像or或the 都在影响编译器。 现在我相信(不确定),对象文字是在编译时创建的,而不是在运行时创建的,这意味着动态变量(例如和级联)将不可用 克服此类障碍而不必重写大量代码的最佳方法是什么
问题内容: 我已经看到“ this”关键字在函数中如何工作?,但我看不到它能回答以下问题。 给出以下代码: 为什么前两次尝试失败,而后两次尝试成功?如果没有绑定到当前对象的文字,什么是它必然? 问题答案: Javascript是一种后期绑定语言。实际上,绑定很晚。不仅在编译时没有绑定,甚至在运行时也没有绑定(就像大多数其他后期绑定语言一样)。在javascript中,是在通话期间绑定的。 绑定规则
我在创建Azure函数时注意到,一个函数App可以有多个函数。 有人能给我解释一下这背后的原理吗? 我的猜测 - 由于函数应用决定了托管(应用服务计划或消耗计划),因此你可以在应用服务计划上有一个函数应用,然后在该函数应用内有多个函数共享同一应用服务计划。 但这在消费计划中没有意义,因为如果你有一个具有“消费”计划的功能应用程序,其中包含2个功能,这与将两个功能拆分为具有消费计划的2个功能应用程序
问题内容: 您可以使用Python字典等JavaScript对象。真的吗?对象中键查找的性能如何?是O(1)吗?向对象添加键也是恒定时间(散列)吗? 问题答案: 该V8设计文档暗示查询将至少这快,如果不是更快: 大多数JavaScript引擎使用类似字典的数据结构作为对象属性的存储 -每个属性访问都需要动态查找以解析属性在内存中的位置。这种方法通常使访问JavaScript中的属性比访问诸如Jav