关于类属性,是否可以告诉我以下示例类是否等效。一个在构造函数中定义,一个在外部定义。
示例1
function Test(input)
{
this.output = input ;
Test.WELCOME = "Hello ;
}
示例2
function Test(input)
{
this.output = input ;
}
Test.WELCOME = "Hello ;
我一直在使用第二种类型,但两者似乎都有用。
干杯
答案 0 :(得分:2)
假设你的意思是:
function Test(input)
{
this.output = input;
Test.WELCOME = "Hello";
}
示例2
function Test(input)
{
this.output = input ;
}
Test.WELCOME = "Hello";
然后在任何new Test
对象的属性方面没有区别,但是在示例1中,您将在每次调用时为WELCOME
函数分配Test
属性方法,而在示例2中,您将只分配此属性一次。
答案 1 :(得分:2)
我很确定这些都不是你真正希望它做的。 this
内部Test
的常用方法是使用new
实例化它时有用的东西。在Test
上设置属性本身对使用x = new Test('someinput')
从其创建的对象没有任何影响。你想要做的是Test.prototype.WELCOME = 'Hello'
,Test
的实例会在[[proto]]
树中拥有该属性,然后才能使用它。
function Test(input){
this.output = input;
}
Test.prototype.WELCOME = 'Hello';
var instanceOfTest = new Test('whatever');
// produces this structure:
instanceOfTest => {
output: 'whatever',
__proto__: {
WELCOME: 'Hello'
}
}
console.log(instanceOfTest.WELCOME); // 'Hello'