了解JavaScript中的原型
可能重复:
JavaScript .prototype如何工作?
来自Java背景,我想了解JavaScript。
请让我知道这些是否正确。
我使用node.js而不是浏览器来学习JS。 我试过了,
var human = Object.create(null); // same as var human;
console.log(Object.getPrototypeOf(human)); //null
var man = Object.create(human);
console.log(Object.getPrototypeOf(man));
//{}
//expected 'human'
var person = Object.create(Object.prototype); // same as var person = {}
console.log(Object.getPrototypeOf(person));
//{}
//expected 'object'
Object.create(null)
,它不从任何东西继承。 Object.prototype.toString
存在, {}.toString
也是如此,所以它是继承的。 .prototype
(或Object.getPrototypeOf
返回的值)是可以使用属性扩展的对象,以便这些属性由实例继承。 你的例子:
var human = Object.create(null); // same as var human;
不,它会创建一个不会从任何东西继承的空对象。 var human;
将human
设置为undefined
- 这不是一个对象,而是一个原始值(并非所有东西都是JavaScript中的一个对象)。
var man = Object.create(human);
console.log(Object.getPrototypeOf(man));
//{}
//expected 'human'
Object.getPrototypeOf(man)
返回human
对象。 这是一个空洞的对象; 节点将其显示为{}
。 它不是一个字符串。 事实上,对象可以分配给多个变量。 一个对象没有绑定的变量,所以设计上根本不可能获得一个字符串。 为了检查相等性,你可以做Object.getPrototypeOf(man) === human
,它产生true
。
var person = Object.create(Object.prototype); // same as var person = {}
console.log(Object.getPrototypeOf(person));
//{}
//expected 'object'
这确实与{}
是一个直接从Object
继承的空对象。 如上所述,原型是Object.prototype
而不是字符串。 它看起来是空的,但这是因为Object.prototype
的函数默认是可用的并且是隐藏的。
首先,您需要在尝试使用它之前阅读有关create
方法。
其次,按以下方式调用对象:
var human = {}, man = {}, person = {};
第三,这不是Java。 在Java类和对类的理解是非常重要的。 原型在JavaScript中是完全可选的。 原型提供的唯一性能优势来自于代码在不同范围内通过引用大量重用函数。 如果这种编码方式不适用于您,那么您可能不需要使用原型。
原型是从父项或某个祖先对象继承的。 JavaScript解析器将首先查找本地分配,如果不存在,则将检查当前对象的原型是否存在已命名的引用。 简而言之,在编写JavaScript的这个早期阶段你需要知道的一切。
首先,国际海事组织,不要开始与节点。 如果您还不知道JavaScript,节点会将您拖入一堆流沙中。 其次,当我开始使用基于功能的代码时,然后是OO,然后才转向原型。 但如果你真的想知道,这个问题已经在这里回答了。 随时问我是否有任何问题!
链接地址: http://www.djcxy.com/p/30079.html