Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象是窗口的属性(全局),窗口是对象的实例?_Javascript_Object_Constructor_Window_Instanceof - Fatal编程技术网

Javascript 对象是窗口的属性(全局),窗口是对象的实例?

Javascript 对象是窗口的属性(全局),窗口是对象的实例?,javascript,object,constructor,window,instanceof,Javascript,Object,Constructor,Window,Instanceof,我是JavaScript新手。正如我们所知,对象是window的属性,window怎么可能是对象的实例?他们有共同的方法吗?我可以创建这样的对象吗?对不起,我的英语不好,谢谢。:) 简而言之,全局窗口对象是一个对象,可以被认为是一个对象的实例,但在JavaScript中,这一切都是合成的 tl;博士回答 从其他OO语言(例如C++或java)到JavaScript可能会混淆。JavaScript与其他语言不同,它不是一种纯OO语言。特别是,在传统意义上,没有“类”纯声明被动地充当实例和子类的模板

我是JavaScript新手。正如我们所知,对象是window的属性,window怎么可能是对象的实例?他们有共同的方法吗?我可以创建这样的对象吗?对不起,我的英语不好,谢谢。:)


简而言之,全局窗口对象是一个对象,可以被认为是一个对象的实例,但在JavaScript中,这一切都是合成的

tl;博士回答

从其他OO语言(例如C++或java)到JavaScript可能会混淆。JavaScript与其他语言不同,它不是一种纯OO语言。特别是,在传统意义上,没有“类”纯声明被动地充当实例和子类的模板。作为一种解释语言(而不是编译语言,如C++和java),JavaScript是基于“原型”函数的;类/子类关系通过实例化实例的方式以及通过每个函数的
\uuuu proto\uuu
属性的原型引用“链”来模拟

尽管最近的JavaScript标准中添加了
class
关键字,但它的实现是建立在先前存在的函数定义和原型链机制之上的。“子分类”可以通过在对函数调用
new
之前设置函数的
prototype
属性来实现。这将创建一个对象实例,其
原型属性由
原型属性的值定义

查找成员数据和方法时,如果不在当前实例中,则会在
\uuuuu proto\uuuu
属性链中搜索该成员,直到找到该成员或到达链的末端

window.hasOwnProperty("Object"); // return true
window instanceof Object // return true