Javascript 为什么函数原型被反复链接?
我对JavaScript非常陌生。我在读JavaScript的好部分。它说: 每个函数对象也使用原型属性创建 所以我做了这样的事情:Javascript 为什么函数原型被反复链接?,javascript,Javascript,我对JavaScript非常陌生。我在读JavaScript的好部分。它说: 每个函数对象也使用原型属性创建 所以我做了这样的事情: function test() { } console.log(test.prototype); 使用Chrome的开发工具,我发现输出如下: 我真的对这个输出感到困惑。为什么构造函数的原型属性再次与构造函数嵌套?为什么这会像链条一样继续?我错过了什么概念 提前谢谢 函数的prototype属性包含一个对象,当使用new操作符创建时,该函数的所有实例都将从该
function test() {
}
console.log(test.prototype);
使用Chrome的开发工具,我发现输出如下:
我真的对这个输出感到困惑。为什么构造函数
的原型
属性再次与构造函数
嵌套?为什么这会像链条一样继续?我错过了什么概念
提前谢谢 函数的
prototype
属性包含一个对象,当使用new
操作符创建时,该函数的所有实例都将从该对象继承。所有这些原型对象(通常)都有一个constructor
属性,它指向函数——这里有循环引用。因此,作为一个newtest()
继承了该属性,(newtest).constructor===test
的计算结果为true
您需要区分函数对象的prototype
属性和对象继承的原型对象-通常被称为“内部[[prototype]]]
属性”
构造函数是一个函数,更不用说是一个函数
,两者都有。因此,它继承自函数.prototype
对象,其中构造函数
属性表示所有函数都是由函数
构造函数构造的。如果开发人员控制台显示函数
对象的原型,您可以看到它们。我认为设置中有一个选项
因此,著名的“原型链”不是关于构造函数
和/或原型
属性,而是关于该对象从中继承的原型对象:
function test() {} new test()
(a Function) (a test instance)
|| ||
|| ||
\/ \/
Function.prototype test.prototype
(a Function, by spec) (an Object)
|| ||
|| ||
\/ \/
Object.prototype Object.prototype
|| ||
|| ||
\/ \/
null null
那是一本很好的书 它从程序员的角度涵盖了更多的javascript,涵盖了所有面向对象的技术,其中的大部分内容在其他任何关于javascript的书籍中都没有涉及 关于原型。 JavaScript中的每个对象都有一个隐藏的状态片段——对另一个对象的引用,称为对象的原型。 JavaScript中的原型对象为我们提供了继承,它们也允许我们共享方法实现。原型还包括链。换句话说,因为原型对象只是一个对象,所以原型对象可以维护对另一个原型对象的引用 Javascript中的原型并不像我在学习时所经历的那个样复杂
这是一个很好的了解js中prototype如何工作的方法。感谢链接,我已经在控制台中快速检查
Object.getPrototypeOf(test)
时想知道输出结果了……回答得很好。。从你的答案中可以得到很多东西:)@Bergi-请解释-“构造函数是一个函数,更不用说函数了,并且两者都有。因此它继承自function.prototype对象”@jason:A“构造函数函数”是a)具有.prototype
属性的构造函数和b)从其原型继承属性的对象(更具体地说是函数
实例)。