在函数中存储变量?

时间:2019-05-07 18:12:34

标签: javascript

我在代码中打错了字,但仍然可以使用。

let stuffs = [];
function stuff(thing) {
  stuff[0] = thing; // should be stuffs[0] = thing;
}
stuff("item");

我期望得到一个错误,但是仍然可以正常工作。 您甚至可以通过"item"获得stuff[0]。这里发生了什么?我应该使用这个吗?

1 个答案:

答案 0 :(得分:3)

在JavaScript中几乎所有具有结构的东西都从Object继承。

在JavaScript对象中,可以具有任何属性。

使用此语句,您可以看到function实际上是一个对象,因此可以像设置简单的{}(具有小的限制,作为函数)一样设置所需的所有属性。具有普通对象没有的另一组属性。)

使用此代码段,您可以检查函数是否继承自Object

function myFunc() {
    // empty! :-)
}

console.log("Func inherits from Object:", myFunc instanceof Object);
console.log("Array inherits from Object:", [] instanceof Object);
console.log("Object inherits from Object:", {} instanceof Object);
console.log("constant string inherits from Object:", "test" instanceof Object);
console.log(" * constant string DON'T inherits from Object but...");
console.log("String constructor inherits from Object:", String instanceof Object);