当前位置: 首页 > 面试题库 >

Javascript构造函数属性的意义是什么?

方夜洛
2023-03-14
问题内容

试图屈服于Javascript对OO的追求,并且像其他许多人一样,对该constructor属性感到困惑。特别是,constructor属性的重要性,因为我似乎无法使其发挥任何作用。例如:

function Foo(age) {
    this.age = age;
}

function Bar() {
    Foo.call(this, 42);
    this.name = "baz"; 
}

Bar.prototype = Object.create(Foo.prototype); 
var b = new Bar;

alert(b.constructor); // "Foo". That's OK because we inherit `Foo`'s prototype.
alert(b.name);        // "baz". Shows that Bar() was called as constructor.
alert(b.age);         // "42", inherited from `Foo`.

在上面的示例中,该对象b似乎具有名为(Bar)的正确构造函数-并且它继承了的age属性Foo。那么为什么很多人建议将此作为必要步骤:

Bar.prototype.constructor = Bar;

显然,在Bar构造
调用了正确的构造函数b,那么这个原型属性有什么影响?我很想知道“正确设置”构造函数的属性会对实际产生什么影响,因为我看不到它对创建对象后实际调用哪个构造函数有任何影响。


问题答案:

constructor属性对内部任何事物都完全没有实际的区别。仅当您的代码明确使用它时,它才有用。例如,您可能决定需要每个对象都具有对创建它的实际构造函数的引用。如果是这样,那么constructor在设置继承时,您需要通过将一个对象分配给构造函数prototype属性来显式设置属性,如您的示例。



 类似资料:
  • 问题内容: 所以我正在学习Java。我有一个月的时间,我刚刚了解了构造函数。但是我看不到创建一个的全部目的。为什么我什么时候要使用?我知道它没有主方法,您可以从主类中调用构造函数。任何人都可以启发我这个话题,这对我有很大帮助。 问题答案: 构造函数是用来初始化/设置类实例的对象。 如果您有一个对象需要一些处理才能使用(例如,初始化成员),则应在构造函数中执行此操作。 理想情况下,您永远不应拥有“部

  • 隐式默认构造函数有一个空主体和一个空初始值设定项列表(未定义的原始类型,默认构造函数用于用户定义的类型)。 这篇帖子说 确实进行了成员级值初始化,但在进行初始化时调用默认构造函数有什么意义 ? 是否调用隐式默认构造函数,以确保调用用户定义类型(可能具有非平凡的默认构造函数)的默认构造函数? 使现代化 似乎在调用编译器生成的隐式默认构造函数后,对象可能无法一致实例化,即未定义基元类型,并且用户定义的

  • 问题内容: 代码是什么 在构造函数内部吗? 例如,这是我的课程的构造函数 它和超类有关吗? 问题答案: 它调用父类的构造函数

  • 问题内容: 我想知道Eclipse中的错误消息是什么意思: 构造函数Case(问题,解决方案,double,CaseSource)含糊不清 问题答案: 当您尝试实例化一个可应用于多个构造函数的类时,将存在问题。 例如: 如果用String对象调用构造函数,则有一个确定的构造函数。但是,如果实例化,则它可能适用于任何一个,因此是不明确的。 具有相似签名的方法同样适用。

  • 本文向大家介绍请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?相关面试题,主要包含被问及请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA构造函数 当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一

  • 问题内容: 我正在调试一些JavaScript,无法解释它的作用? 有人可以给我一个提示,为什么这个人正在使用?我有时也看到它而没有声明。 问题答案: 这意味着该参数是可选的。因此,如果您不带任何参数调用该方法,则它将使用默认值。 它是写作的简写: 这种带有布尔表达式的速记技巧在Perl中也很常见。带有表达式: 它计算是否为或为。因此,如果为真,则完全不需要检查。这称为短路布尔评估,因此: 基本上