Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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 如果找不到对象的属性(Obj构造函数),则返回值不是未定义的。为什么?_Javascript_Html_Javascript Objects - Fatal编程技术网

Javascript 如果找不到对象的属性(Obj构造函数),则返回值不是未定义的。为什么?

Javascript 如果找不到对象的属性(Obj构造函数),则返回值不是未定义的。为什么?,javascript,html,javascript-objects,Javascript,Html,Javascript Objects,考虑一个基本示例,其中我试图请求一个对象中不存在的属性 案例一:(一般对象) 回答:未定义 这意味着,如果存在不存在的属性,则正确地将其称为未定义的 案例二:(对象构造函数) 现在,我要做同样的事情-首先制作一个从字符串构造函数继承的字符串,它从对象构造函数继承。对象构造函数的\uuuuu proto\uuuu没有名为\uuuuu proto\uuu的属性,因此答案应该是未定义的。但是(奇怪的是)它返回null。这是无法理解的 As far as I know, if the property

考虑一个基本示例,其中我试图请求一个对象中不存在的属性

案例一:(一般对象)

回答:
未定义

这意味着,如果存在不存在的属性,则正确地将其称为
未定义的

案例二:(对象构造函数)

现在,我要做同样的事情-首先制作一个从
字符串构造函数
继承的字符串,它从
对象构造函数
继承。对象构造函数的
\uuuuu proto\uuuu
没有名为
\uuuuu proto\uuu
的属性,因此答案应该是未定义的。但是(奇怪的是)它返回
null
。这是无法理解的

As far as I know, if the property of an Object is not found - its value should be `**undefined**` and not `**null**`. 


现在,请有人帮助理解-在进入
原型链之后,概念和实现应该保持不变。因此,如果未找到
对象构造函数
\uuuu proto\uuuu
属性,为什么答案不应该是
未定义
,而应该是

按照Javascript的设计方式,
null
位于每个对象原型链的顶端。对于内部方法
GetPrototypeOf
,其类型签名为
()→ 对象| Null
,并且它:

确定为该对象提供继承属性的对象。空值表示没有继承的属性

访问对象的
\uuuu proto\uuuu
属性,或使用
object.getPrototypeOf
将调用该内部方法。
\uuuu proto\uuu
属性确实存在于大多数对象上(因此它不会返回
未定义的
),但它所调用的对象不能保证具有内部原型(如果没有,则该操作返回
null

查看
\uuuu proto\uuuu
是如何在
对象上执行getter/setter的。prototype


console.log(Object.getOwnPropertyDescriptor(Object.prototype,“\uuuuuuuuuuu”)
这意味着,当我们特别尝试为任何项目(大多数项目都会有)查找
\uuuu proto\uuuuuu
属性时,这将触发函数
getPrototypeOf()
,该函数具有内置代码,如果找不到它,则返回
原型链接
null
(代码中的2个选项中的1个). 对吗?(这将删除
未定义
的情况,因为值是从逻辑内部返回的
null
)是。如果需要,您可以自己定义这样一个属性:一个getter,它不
if(cond)返回{someObj}else返回null谢谢!顺便说一句,在问了这个问题后,我找到了你的身份证,想问你一个问题。发现你还有3分钟,所以无论如何你都要回来。。PS::p
As far as I know, if the property of an Object is not found - its value should be `**undefined**` and not `**null**`.