Java脚本原型是什么类型的对象?

What type of object is a Javascript prototype?(Java脚本原型是什么类型的对象?)
本文介绍了Java脚本原型是什么类型的对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

function Person(name) {
  this.name = name;
}
var rob = new Person('Rob');
  • Person是一个函数。
  • Person是对象。
  • 人不是人。
  • Rob是对象。
  • Rob的原型(__proto__)是Person.Prototype,所以Rob是一个人。

但是

console.log(Person.prototype);

输出

Person {}

Person.Prototype是对象吗?阵列?一个人?

如果它是对象,该原型是否也有原型?

更新我从这个问题中学到的东西(2014年1月24日星期五上午11:38:26)

function Person(name) {
  this.name = name;
}
var rob = new Person('Rob');

// Person.prototype references the object that will be the actual prototype (x.__proto__)
// for any object created using "x = new Person()". The same goes for Object. This is what
// Person and Object's prototype looks like.
console.log(Person.prototype); // Person {}
console.log(Object.prototype); // Object {}
console.log(rob.__proto__); // Person {}
console.log(rob.__proto__.__proto__); // Object {}

console.log(typeof rob); // object
console.log(rob instanceof Person); // true, because rob.__proto__ == Person.prototype
console.log(rob instanceof Object); // true, because rob.__proto__.__proto__ == Object.prototype

console.log(typeof rob.__proto__); // object
console.log(rob.__proto__ instanceof Person); // false
console.log(rob.__proto__ instanceof Object); // true, because rob.__proto__.__proto__ == Object.prototype
  • 原型只是普通对象。
  • typeof对于确定某个对象是对象还是基元(以及它是什么类型的基元)很有用,但对于确定它是什么类型的对象无用。
  • LHS instanceof RHS如果RHS出现在原型链中的某个位置,则返回True。

推荐答案

Person.Prototype是对象吗?

是的。一切都是对象:-)有关详细信息,请参阅How is almost everything in Javascript an object?。

数组?

不,绝对不是。

一个人?

视情况而定。大多数人会说这不是Person的一个例子--这是所有人的本质(他们的原型:-)。但是,console.log似乎是这样标识它的,因为它有一个指向Person构造函数的.constructor属性。

如果它是对象,该原型是否也有原型?

是的。每个物体都有一个原型。它们构建了所谓的原型链,其末端是一个null引用。在您的特定示例中,它是

      rob
       |
       v
 Person.prototype
       |
       v
 Object.prototype
       |
       v
      null

这篇关于Java脚本原型是什么类型的对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)