对象创建中的 JavaScript && 符号

标签 javascript object inheritance

我的问题是关于以下表达式:

var prototype = Object.create(extend && extend.prototype);

我认为它正在创建继承扩展对象的原型(prototype)对象。和extend && extend.prototype正在检查extend是否存在以及extend.prototype是否存在。如果其中一个不存在,原型(prototype)将是一个没有父类(super class)的对象。如果两者都存在,prototype会继承extend吗?它怎么知道使用extend.prototypeextend && extend.prototype语法?

所以var prototype = Object.create(extend && extend.prototype)var prototype = Object.create(extend.prototype)如果 extend 则相同和extend.prototype有吗?

谢谢。

最佳答案

关键是在 JavaScript 中,与其他继承 C 语言的语言不同,&& 运算符(不一定)有 bool 结果。 && 运算的值是第一个“假”表达式的值,或者是最后一个表达式的值。它所做的测试是对子表达式的强制转换为 bool 值执行的,但结果值是最后评估的子表达式的原始值。

本次评价

extend && extend.prototype

结果值将是子表达式 extend 的值或子表达式 extend.prototype 的值。如果 extendnullundefined 或任何其他“假”值,则该值将是总体结果。否则,该值将是 extend.prototype 的值。

请注意,例如,如果 extend 是一个简单对象,特别是没有名为 prototype 的属性的对象,则总体值可能仍为 undefined。很明显,问题中代码的意图是选择传入构造函数的原型(prototype)引用,但它不是“防弹”代码。

关于对象创建中的 JavaScript && 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28858767/

相关文章:

javascript - 在不调整浏览器窗口大小的情况下模拟方向更改

javascript - 输入字段为空时卡片翻转不起作用

javascript - 文字对象中的嵌套函数

C++继承指针

postgresql - 从表 postgresql 继承需要什么权限

java - 在java中转义单引号并尝试在json blob中呈现转义的引号

javascript - exec 'node app' 在 gulp 任务中挂起

c++ - 类名函数名(const 类名&对象名) 是什么意思?

javascript - 无法获取 JavaScript 对象的属性

java - 继承:是在父类(super class)内部复制内容吗?