这些是继承的属性吗?

Are these inherited properties?

我正在学习继承属性,但我很困惑。非常感谢你的帮助,让我更清楚一些。

所以,继承的属性是对象从原型对象继承的属性。

我读过的一篇文章给出了继承 属性 的示例:“每个 JavaScript 对象都从其原型对象继承了 toString 属性”

所以,我的问题是: 这些都是继承属性吗?

(我从MDN对象中找到这个列表,它们是对象的静态方法、实例属性和实例方法,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

那么,这是否意味着所有对象都具有上述属性?

既然函数基本上都是对象,函数也继承了那些?

此外,是否有一个地方可以找到对象具有的所有继承属性的列表?

在此先感谢您!很抱歉 post.

不能继承静态方法,因为它们存在于 class 而不是 class 的任何实例。所以那些都出来了。其他方法,绝对!至少我是这么认为的。让我们运行 进行一些实验并检查结果。

const f = () => {
    return "hello world"
};
f.foo = "bar";

console.log(f.constructor);
console.log(f.toString());
console.log(f.valueOf());
console.log(f.hasOwnProperty("foo"));
console.log(f.hasOwnProperty("frankincense"));

这个片段表明,确实如此,non-static 方法由函数继承,因为函数是对象......正如克罗克福德在他的坟墓中滚动

静态方法,只属于Object class(构造函数),这意味着你只能通过Object.nameOfMethod().

另一方面,实例属性和方法被对象的所有实例继承,这意味着每个对象都将继承那些props/methods。

现在请记住,在 JS 中,每个实体如果不是基元,就是一个对象。

例如一个数组:

const arr = ["hello"]

console.log(typeof arr)                           // object
console.log(arr instanceof Object)                // true
console.log(Array.prototype.isPrototypeOf(arr))   // true
console.log(arr.propertyIsEnumerable(0))          // true
console.log(arr.toLocaleString())                 // hello
console.log(arr.valueOf())                        // ["hello"]
console.log(arr.hasOwnProperty(0))                // true
console.log(arr.toString())                       // hello

这是因为即使JS中的数组Array的实例,也是Object的实例,你可以把数组看成是索引是键的特殊对象:

const arr = {
0: "hello"
}