Javascript 为什么构造函数可以';无法访问其原型的属性,但可以访问父原型的属性(原型的原型)
我使用chrome浏览器控制台检查了以下代码: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" 那么为什么构造函数不能访问他的
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
是函数
对象的一个实例,所以不起作用