首页 > 解决方案 > OLOO 创造差异?

问题描述

除了第二个 Foo 没有原型链之外,这两个版本的 Foo 之间还有其他区别吗?

typeof 说有两个对象,除此之外,我看不到行为等方面的其他变化,除非我遗漏了一些东西......

var Foo = {
    init: function(who) {
        this.me = who;
    },
    identify: function() {
        return "I am " + this.me;
    }
};

var Bar = Object.create( Foo );

Bar.speak = function() {
    alert( "Hello, " + this.identify() + "." );
};

var b1 = Object.create( Bar );
b1.init( "b1" );
var b2 = Object.create( Bar );
b2.init( "b2" );

b1.speak();
b2.speak();

var Foo = Object.create( null );
    Foo.init = function init(who) {
        this.me = who;
    };
    Foo.identify = function identify() {
        return "I am " + this.me;
};

var Bar = Object.create( Foo );

Bar.speak = function() {
    console.log( "Hello, " + this.identify() + "." );
};

var b1 = Object.create( Bar );
b1.init( "b1" );
var b2 = Object.create( Bar );
b2.init( "b2" );

b1.speak();
b2.speak();

标签: javascript

解决方案


推荐阅读