JavaScript实例化对象

function Person(name, age) {
    this.name = name
    this.age = age
}

new Person('Tom', 33)

console.log(window.name)
console.log(window.age)

如上代码,输出undefined,疑惑属性 name 和 age 被挂在哪个对象下?

阅读 3.9k
4 个回答
new Person('Tom', 33)

由于你没有把实例赋值给一个变量,所以改实例没有任何引用,在下一轮会被回收掉。

而且你也没有显示的把它赋值给window,所以window也不是那个实例的引用。

结论就是没有挂在任何的变量下。

在你new出来的实例上面,你可以试着

console.log(new Person('tom,33).name)

其实一般都是写作

var p = new Person('Tom', 33);
console.log(p.name);
console.log(p.age);

希望能帮到你哦?

这就好比开了片荒地,都弄好了,没挂路牌,谁也找不到。

new的含义是创建一个新对象,把构造函数的this对象赋给这个对象,执行代码再返回对象。
但是,你的这段代码里,new的新对象并没有被储存起来啊,而构造函数上的this肯定指向window(非严格模式下)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题