我在代码中打错了字,但仍然可以使用。
let stuffs = [];
function stuff(thing) {
stuff[0] = thing; // should be stuffs[0] = thing;
}
stuff("item");
我期望得到一个错误,但是仍然可以正常工作。
您甚至可以通过"item"
获得stuff[0]
。这里发生了什么?我应该使用这个吗?
答案 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);