new操作符与this
在JavaScript中,如果函数没有return值,则默认return this
function man(name,age){
var man = {};
this.name = name;
this.age = age;
}
var d = new man("是希望",20);
console.log(d);//man { name: '是希望', age: 20 },
new操作符与prototype
通过new操作符生成一个man对象的实例
var m = new man();
new操作符在这背后做了三件事情:
var m = {};
m.__proto__ = man.prototype;
man.call(m);
第一行:创建一个空对象
。
第二行:将空对象的__proto__
属性指向man对象的prototype
属性。
第三行:将man()函数中的this指向m变量。
于是m变量就是man对象的一个实例。
实例的__proto__
属性指向的是创建实例对象时,对应的函数的原型。设置m对象的__proto__
值为man对象的prototype属性,那么m对象就继承
了man原型上的函数,这样就可以调用
man原型上的函数了。