function people(name) { 这样定义是在全局命名空间(global namespace)
name: name,
sayname: function() {
alert(this.name);
}
}
jack = people("jack"); 这个时候 this 指的是 jack
var a = jack.sayname();
a(); 输出undefined的,因为a 的 this 指向全局变量(global variable),没有 name
修改后
function People(name) {
this.name: name,
sayname: function(){
alert(this.name);
}
}
var a = new People("jack"); 每次new 都会产生新的sayname,使用People.prototype.sayname可以实现共享
new 的作用是产生一个全新的空对象,然后调用后面的构造函数 new fn(); 然后把this指向新对象,属性也都加上去
下面这种形式也是在实例化,因为是匿名构造函数,所以形式不同:
new (function(a) {this.a = a})()