I am executing following code
function Person(name, age){
this.name = name || "John";
this.age = age || 24;
this.displayName = function(){
console.log('qq ',this.name);
}
}
Person.name = "John";
Person.displayName = function(){
console.log('ww ',this.name);
}
var person1 = new Person('John');
person1.displayName();
Person.displayName();
getting following output :
qq John
ww Person
I am not getting how am getting this.name = Person in second console
That comes from Function.name
as explained in the JS MDN
A Function object's read-only name property indicates the function's name as specified when it was created, or "anonymous" for functions created anonymously.
function doSomething() {}
doSomething.name; // "doSomething"
If you want to get the desired output, change the property name
to name1
function Person(name1, age){
this.name1 = name1 || "John";
this.age = age || 24;
this.displayName = function(){
console.log('qq ',this.name1);
}
}
Person.name1 = "John";
Person.displayName = function(){
console.log('ww ',this.name1);
}
function main() {
var person1 = new Person('John');
person1.displayName();
Person.displayName();
}
The output :
qq John
ww John
The name property returns the name of a function statement.
When you are calling function as Person.displayName(); & try to use "this.name". it will return name of the function
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With