無語,一開始以為各位大神都知道這種風(fēng)格就沒加上代碼,結(jié)果問題被踩,貴社區(qū)戾氣真重,佩服佩服。在看《你不知道的js》的時候了解了這種代碼風(fēng)格,但是貌似(?)這種代碼風(fēng)格不是特別常見,是因為這種風(fēng)格有什么弊端嗎以下是對象關(guān)聯(lián)風(fēng)格&面向?qū)ο箫L(fēng)格的對比//典型的(‘原型’)面向?qū)ο箫L(fēng)格function Foo() { this.me = who;}Foo.prototype.identify = function() { return 'I am '+ this.me;}function Bar(who) { Foo.call(this, who);}Bar.prototype = Object.create(Foo.prototype);Bar.prototype.speak = function() { alert('hello, '+ this.identify() + '.');};var b1 = new Bar('b1');var b2 = new Bar('b2');b1.speak();b2.speak();//子類Bar繼承了父類Foo,然后生成b1和b2的兩個實例。b1委托了Bar.prototype。后者委托了Foo.prototype。這種風(fēng)格很常見。//對象關(guān)聯(lián)風(fēng)格來編寫功能完全相同的代碼Foo = { init: function(who) { this.me = who; }, identify: function() { return 'i am '+ this.me }};Bar = Object.create(Foo);Bar.speak = function() { alert('hello, '+ this.identify() + '.');}var b1 = Object.create(Bar);b1.init('b1')lvar b2 = Object.create(Bar);b2.init('b2');b1.speak();b2.speak();//在這段代碼中同樣利用了[[prototype]]把b1委托給Bar并把Bar委托給Foo,和上一段代碼一模一樣。我們?nèi)匀粚崿F(xiàn)了三個對象之間的關(guān)聯(lián)。在這段代碼中,我們只是把對象關(guān)聯(lián)起來了,并不需要那些復(fù)雜又令人困惑的模仿類的行為(構(gòu)造函數(shù),原型以及new)。
關(guān)于js對象關(guān)聯(lián)風(fēng)格
12345678_0001
2019-03-13 18:14:41