2个JavaScript对象有什么区别?

the*_*ist 4 javascript javascript-framework

我尝试提高我的JavaScript技能.我不明白为什么(5)有效,(2)返回错误.不一样吗?

  1. B.fn()//好的
  2. B.fn2()// TypeError:对象#没有方法'fn2'
  3. var a = new A()
  4. a.fn()//好的
  5. a.fn2()//好的

    var A = function () {
        this.fn = function () { alert(3); }
    }
    A.prototype = {
        fn2: function () { alert(4); }
    };
    
    var B =
        {
            fn: function () { alert(1); }
        }
    B.prototype = {
        fn2: function () { alert(2); }
    };
    
    Run Code Online (Sandbox Code Playgroud)

Far*_*gam 7

aA类的一个实例,其中B类本身也是如此.由于fn2未定义为静态函数,因此它仅对类的实例可用,B而不是类B本身.

如果您想B直接使用,可以使用:

new B().fn2()

如果你定义Bfunction()

或者,您可以定义fn2与定义相同的方式fn

  • 实际上`new B().fn2()`不起作用,因为在任何地方都没有定义`B()`函数. (2认同)