Javascript ___;协议__;对象和函数
我正在从头开始学习/在JavaScript上做个人笔记,遇到了一些我想解释的事情 有人能解释一下吗:Javascript ___;协议__;对象和函数,javascript,prototype,Javascript,Prototype,我正在从头开始学习/在JavaScript上做个人笔记,遇到了一些我想解释的事情 有人能解释一下吗: Object.prototype.hasOwnProperty("__proto__"); //True Object.prototype.__proto__; //null Object.hasOwnProperty("__proto__"); //False Object.__proto__; //function(){} 为什么它说对象没有自己的属性\uuuuu proto\u
Object.prototype.hasOwnProperty("__proto__"); //True
Object.prototype.__proto__; //null
Object.hasOwnProperty("__proto__"); //False
Object.__proto__; //function(){}
为什么它说对象没有自己的属性\uuuuu proto\uuuuu
,它在最后一行输出的函数是什么
编辑:以下部分已在此处解决: 另外一个问题,为什么下面的陈述都是正确的
Function instanceof Object //True
Object instanceof Function //True
关于\uuuu proto\uuuuu
从ECMAScript 5开始,这不是标准属性。这一点在手册中根本没有定义。但是所有的环境都广泛支持它的使用。由于它不是语言规范的一部分,因此不鼓励使用它,建议访问内部原型对象的方法是使用或
注1:
注2:只有ECMAScript 2015才支持使用setPrototypeOf
设置原型对象
现在,让我们从以下几点中了解问题中每一行的原因
\uuuu proto\uuuu
的环境已经在对象中定义了它们。由于大多数对象都继承自对象
,因此它们也都继承\uuuuu proto\uuuu
属性。这就是为什么Object.prototype.hasOwnProperty(“\uuu-proto\uuu”)代码>返回true
null
,因为语言规范说对象的内部属性[[Prototype]]
。Prototype
应该是null
Object.hasOwnProperty(“\uuuu proto\uuuu”)
返回False
,因为\uuuu proto\uuuu
实际上是在对象上定义的。prototype
和对象
只是继承它。由于\uuuu proto\uuuu
不是它自己的属性,因此它将返回False
Object.\uuuu proto\uuuu
返回函数
对象,因为语言规范明确规定内部[[Prototype]]
属性应该是函数
对象关于你的补充问题:
函数
和对象
都是函数(“构造函数”),也都是对象,因为所有函数都是对象。你的补充问题已经详细讨论过了。