JavaScript new keyword and objects scopes

泪湿孤枕 提交于 2019-11-30 23:50:50

When you say new katana(), Javascript calls the katana function, with a new blank object as this. Once it returns, presumably initialized, the new object (or whatever katana returns, as long as it's an object) is set up so that its 'prototype' (the object that it'll inherit fields and such from) is the same as the katana function's prototype.

Yeah, that didn't make much sense either the first time i went through it. The oversimplified version is, you say new katana(), and Javascript creates what'll be a katana instance and lets the katana function initialize it. You say katana(), and this is basically the last object in the call stack to have been used in an instance method call. (If your caller was x.foo, this == x.) If there's no such object, seems this is the same as window.

As for why xyz isn't showing up, you declared the variable with var. That changes the scope. If you got rid of that, you'd see a window.xyz.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!