V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
PurpleSun
V2EX  ›  问与答

《JavaScript 权威指南》6.1.4 节中的 inherit 函数是个 bug?

  •  
  •   PurpleSun · 2014-05-25 19:39:18 +08:00 · 3287 次点击
    这是一个创建于 3868 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第9行的`&&`应该是`||`吧
    如果是`&&`的话,if中的表达式永远为true了
    第 1 条附言  ·  2014-05-25 20:46:01 +08:00
    update:
    "如果是`&&`的话,if中的表达式永远为true了" =>
    "如果是`&&`的话,if中的表达式永远为false了"
    第 2 条附言  ·  2014-05-26 00:19:14 +08:00
    感谢@bravluna,@chairuosen,@leecade和@akfish的回答
    嗯,确实不是bug。。。
    ==========
    引用:"Object prototype may only be an Object or null"
    考虑到null也能作为原型,且number类型如1不能作为原型,可以这样重写:
    6 条回复    2014-05-25 21:52:08 +08:00
    chairuosen
        1
    chairuosen  
       2014-05-25 19:46:25 +08:00
    要是或才是BUG。。。。
    akfish
        2
    akfish  
       2014-05-25 19:52:52 +08:00
    怎么可能永远为true。。。。。
    inherit(1);
    inherit("wtf");
    leecade
        3
    leecade  
       2014-05-25 19:55:27 +08:00
    Not a bug
    PurpleSun
        4
    PurpleSun  
    OP
       2014-05-25 20:45:16 +08:00
    update:
    "如果是`&&`的话,if中的表达式永远为true了" =>
    "如果是`&&`的话,if中的表达式永远为false了"

    我的理解是:`inhert`函数期望`t`的类型为`object`或`function`
    bravluna
        5
    bravluna  
       2014-05-25 21:45:09 +08:00
    不是 bug。
    !p && !q ==> !(p || q),这样好理解点儿吗?显然,function 对象和普通 object 都能做原型
    bravluna
        6
    bravluna  
       2014-05-25 21:52:08 +08:00
    其实 function 对象也是个 object,可是 typeof 运算符把它们两个分开了,所以这里要多处理一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:22 · PVG 03:22 · LAX 11:22 · JFK 14:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.