Javascript 为什么构造函数可以';无法访问其原型的属性,但可以访问父原型的属性(原型的原型)

Javascript 为什么构造函数可以';无法访问其原型的属性,但可以访问父原型的属性(原型的原型),javascript,Javascript,我使用chrome浏览器控制台检查了以下代码: function A(){ this.a='a' } 这是一个构造函数。我将属性b分配给a的原型 A.prototype.b='b'; 但是当我使用构造函数A访问b属性时。它显示未定义的 A.b //it return undefined 我再次将属性m分配给函数.prototype,使用A的访问返回corect值 Function.prototype.m='m'; A.m //it return "m" 那么为什么构造函数不能访问他的

我使用chrome浏览器控制台检查了以下代码:

function A(){
  this.a='a'
}
这是一个构造函数。我将属性
b
分配给
a
的原型

A.prototype.b='b';
但是当我使用构造函数
A
访问
b
属性时。它显示未定义的

A.b //it return undefined
我再次将属性
m
分配给
函数.prototype
,使用
A
的访问返回corect值

Function.prototype.m='m';
A.m //it return "m"

那么为什么构造函数不能访问他的prototype属性,但是可以访问父prototype(他的prototype的protype)属性你不能访问
A.prototype.b
,因为你没有实例化
A
。原型是一种对象,它是。在您的示例中,这可能是这样的:

// Create your constructor and prototype object
function A() {}
A.prototype = {
  b: "b"
};

var a = new A();
console.log(a.b); 
>>> "b"
但是,在
A.m
的情况下,
A
(注意,大写字母A是您的构造函数)是
函数的一个实例,因此继承了它的所有属性,包括您添加的属性


要了解更多信息,我建议您查看一篇关于的MDN文章,您无法访问
A.prototype.b
,因为您尚未实例化
A
。原型是一种对象,它是。在您的示例中,这可能是这样的:

// Create your constructor and prototype object
function A() {}
A.prototype = {
  b: "b"
};

var a = new A();
console.log(a.b); 
>>> "b"
但是,在
A.m
的情况下,
A
(注意,大写字母A是您的构造函数)是
函数的一个实例,因此继承了它的所有属性,包括您添加的属性


要了解更多信息,我建议您查看一篇关于的MDN文章,因为
A
不是
A
构造函数的实例,因此您无法将其作为
A.b
访问。您需要:

var instanceA = new A();
instanceA.b; // will work
鉴于

Function.prototype.m='m';
A.m //it return "m"

因为
A
函数
对象的一个实例,所以不能将其作为
A.b
访问,因为
A
不是
A
构造函数的实例。您需要:

var instanceA = new A();
instanceA.b; // will work
鉴于

Function.prototype.m='m';
A.m //it return "m"
因为
A
函数
对象的一个实例,所以不起作用