猿问

关于对象的constructor属性

function Person(name,age,job){
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = function(){
    console.log(this.name);
  };
};


var person1 = new Person("Ray",25,"Engineer");

person1.constructor;    //Person(name, age, job)
person1.constructor === Person;   //true
person1.constructor === Person(name, age, job);  //false

那个person1.constructor输出的明明是Person(name, age, job);为什么person1.constructor === Person(name, age, job);返回的是false?

那个Object也是一样:

var person2 = new Object();

person2.constructor;     //Object()

person2.constructor === Object();    //false

person2.constructor === Object;       //true

这个搞得我有点晕了。。。

comlejade
浏览 1829回答 3
3回答

慕婉清01272

实例person1的构造函数和你后来手写的Person不是同一个内存空间,比如你爸叫李刚,不能所有的李刚都是你爸吧?

pardon110

注意person1.constructor指向的是实例person1的构造函数,准确的说是function Person(name,age,job){}是,函数声明。

comlejade

在不同的控制台中显示的是不一样的哈,chrome返回的是那个函数,而firebar返回的是那个Person(name,age,job);如果是按chrome那个就好理解了,但是那个firebar为什么会出现那种情况?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答