我是第一次正式学习数据结构.对我来说,传统上描述链接列表的一些好处(更容易的内存分配以及更快的输入和删除到列表的主体)在js中似乎没有给定数组的工作方式(比如带有数字键的对象).
任何人都可以举例说明我为什么要在javascript中使用链接列表?
我正在努力学习this,这让我有点困惑:
var randomFunction = function(callback) {
var data = 10;
callback(data);
};
var obj = {
initialData: 20,
sumData: function(data) {
var sum = this.initialData + data;
console.log(sum);
},
prepareRandomFunction: function() {
randomFunction(this.sumData.bind(this));
}
};
obj.prepareRandomFunction();
Run Code Online (Sandbox Code Playgroud)
是否this设计为自己设置在代码中首次呈现的位置?例如,在我的例子中,我成功地使用它来引用obj并绑定函数obj,但是因为this它被作为回调函数传递,所以阻止它被设置randomFunction为什么(即什么阻止它从字面上传递"这个.sumData.bind(this)"这样this设置为randomFunction从那里调用时?"
我是一个努力学习的菜鸟.谢谢.
更新
我并不是一般都在询问它是如何工作的(我不认为).我很想知道为什么this在我将其定义为我的randomFunction调用的参数的地方设置,而不是在其中callback调用的地方randomFunction.我可能是错的,但如果我要换掉我现在this.sumData.bind(this)的callback(data)那个,我想我会得到不同的结果.是不是因为callback是一个参考this.sumData.bind(this),当它被首先定义(何this为obj)?
我想我已经通过这个场景了解了this它在执行时设置的情况.它不会作为参数传递,以便稍后在该行调用参数时进行设置.
我正在努力学习编程.我已经浏览了一个在线教程网站列表,我认为这对我来说非常重要.
我的问题:
(这是我最想了解的)在我的for ... in循环中,为什么使用"Contacts"构造函数创建新的"obj"对象?似乎每次循环时我都需要一个不同的名称,这样我就不会覆盖我之前创建过传递的对象.如果这是正确的,如果我对提前联系的数量或价值一无所知,我该怎么做呢?另外,为什么控制台日志中的任何对象的标题都没有说obj?我是否对创建对象实例意味着什么感到困惑?这些实例的名称是不重要的吗?
为什么所有属性都未定义?应该引用临时"i"变量的属性吗?
从未知的总数据条目创建对象似乎非常重要.不幸的是,像Codecademy这样的地方在这里不足.您始终使用他们为您提供的硬编码名称手动创建对象的新实例.但如果有两个相同的名字,会发生什么?
非常感谢您对此的任何帮助.不要拒绝告诉我其他任何愚蠢的事情.
以下是控制台屏幕截图的链接 - http://i.imgur.com/TK4dtfV.png
var TestApp = {};
// my data... taken from wherever
TestApp.jsonContacts = {
contact1: {
name: "Ethan",
age: 24
},
contact2: {
name: "Evan",
age: 30
},
contact3: {
name: "Paul",
age: 9000
}
};
// I know this is silly, just let me pretend...
TestApp.jsonStrung = JSON.stringify(TestApp.jsonContacts);
TestApp.globalContactList = [];
// my constructor function to create instances of Contact
TestApp.Contact = function(name, age){
this.name = name;
this.age …Run Code Online (Sandbox Code Playgroud) 等待!我知道还有其他非常相似的问题,但是(也许是我)我需要回答其中的特定部分。
我知道可以说Object.prototype在委托链的最顶端。但是,在功能存在以使它成为实例之前,对象(作为函数对象)如何可以在其上具有原型方法呢?我是否应该想象一下同时创建两个伏都教的地方?
这两个Object instanceof Function和Function instanceof Object是真实的
好像是鸡肉和鸡蛋。
可以var merge = require('lodash').merge用ES6 做点什么吗?
希望有类似的东西import {lodash.merge as merge} from 'lodash'.
function add(num) {
var sum;
for (var i = 1; i < num + 1; i++){
sum = (sum || 0) + i;
};
return sum;
}
add(9);
Run Code Online (Sandbox Code Playgroud)
什么是关键字来描述在for循环中添加到"i"时定义sum的行为?这是三元手术吗?显然第一次循环它是未定义的,所以javascript选择0.为什么?
javascript ×6
addressbook ×1
bind ×1
ecmascript-6 ×1
json ×1
new-operator ×1
object ×1
prototype ×1
this ×1
undefined ×1