closures - Javascript : getting function name with this.name - Stack Overflow

I am executing following code function Person(name, age){this.name = name || "John";this.age

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

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

Share Improve this question asked Dec 22, 2017 at 6:10 Javed INJaved IN 3321 gold badge4 silver badges12 bronze badges 0
Add a ment  | 

3 Answers 3

Reset to default 3

That es 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

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745267263a4619532.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信