这些是继承的属性吗?
Are these inherited properties?
我正在学习继承属性,但我很困惑。非常感谢你的帮助,让我更清楚一些。
所以,继承的属性是对象从原型对象继承的属性。
我读过的一篇文章给出了继承 属性 的示例:“每个 JavaScript 对象都从其原型对象继承了 toString 属性”
所以,我的问题是:
这些都是继承属性吗?
静态方法
Object.assign()
Object.create()
Object.defineProperty()
Object.defineProperties()
Object.entries()
Object.freeze()
Object.fromEntries()
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptors()
Object.getOwnPropertyNames()
Object.getOwnPropertySymbols()
Object.getPrototypeOf()
Object.is()
Object.is可扩展()
Object.is冰雪奇缘()
Object.is密封()
Object.keys()
Object.preventExtensions()
Object.seal()
Object.setPrototypeOf()
Object.values()
实例属性
Object.prototype.constructor
Object.prototype.原型
实例方法
Object.prototype.defineGetter()
Object.prototype.defineSetter()
Object.prototype.lookupGetter()
Object.prototype.lookupSetter()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.属性IsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toString()
Object.prototype.valueOf()
(我从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"
}
我正在学习继承属性,但我很困惑。非常感谢你的帮助,让我更清楚一些。
所以,继承的属性是对象从原型对象继承的属性。
我读过的一篇文章给出了继承 属性 的示例:“每个 JavaScript 对象都从其原型对象继承了 toString 属性”
所以,我的问题是: 这些都是继承属性吗?
静态方法
Object.assign()
Object.create()
Object.defineProperty()
Object.defineProperties()
Object.entries()
Object.freeze()
Object.fromEntries()
Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptors()
Object.getOwnPropertyNames()
Object.getOwnPropertySymbols()
Object.getPrototypeOf()
Object.is()
Object.is可扩展()
Object.is冰雪奇缘()
Object.is密封()
Object.keys()
Object.preventExtensions()
Object.seal()
Object.setPrototypeOf()
Object.values()
实例属性
Object.prototype.constructor
Object.prototype.原型
实例方法
Object.prototype.defineGetter()
Object.prototype.defineSetter()
Object.prototype.lookupGetter()
Object.prototype.lookupSetter()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.属性IsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toString()
Object.prototype.valueOf()
(我从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"
}