2011-08-05 24 views
5

Ben Sonra geri 'undefined' olsun ReplDüğümde "statik yöntemler" ile Nesne, İşlev, Tarih vb. Ekleyebilir miyim?

require("./augs"); 
typeof Object.foo 

yazın

Object.foo = "bar"; 

içeren bir node.js modülü "augs" oluşturursanız.

Biz son kullanıcı ve arka uç arasında bazı kod paylaşmaya çalışıyoruz Object eklenen kolaylık yöntemleri Function, Date vs. dayanır web uygulamasında kod önemli miktarda var ama Düğüm gibi görünüyor Bu yapıcı işlevlerini sıfırlar veya bir şekilde, belirli bir modüldeki değişikliklerin başka modüllere sızmasını önler. Bu oldukça akıllı ve koruma düzeyini takdir ederken, "Ne yaptığımı biliyorum, lütfen bana Object'u büyütmeme izin verin" diyebileceğimiz bir yol var mı? Böyle

exports.augment = function(o) { 
    o.foo = "bar"; 
} 

güçlendirmek Object: augs.js varsayarsak

cevap

4

aşağıdakileri içerir

> var aug = require("./augs.js"); 
> aug.augment(Object); 
> typeof Object.foo 
'string' 

Not: Sonra

exports.getObject = function() { 
    return Object; 
} 

: ayrıca aşağıdaki işlevi ihracat varsayalım:

> var aug = require("./augs.js") 
> aug.getObject() == Object 
false 
+0

Evet, sanırım bu işe yarar; Ne kadar berbat olsa da, (oldukça büyük) augs.js'i bir dışa aktarma modülüne dönüştürmek zorunda kalırdım. Ayrıca bir modülden 'Nesnenin 'başka bir modülden' == '' Nesne olmadığını işaret ettiğin için teşekkür ederim. – Domenic

+0

@lwburk Farklı modüllerdeki farklı nesneler hakkında ayrıntılı bilgi verebilir misiniz? –

+0

@Peter - Basitçe söylemek gerekirse, bir modüldeki yerliler bu modülü yükleyen senaryodakilerle aynı yerliler değildir. Ayrıca: "Şu anda Modüller 1.1'den itibaren bir ortamın Modüllerde yerel sınıfları nasıl uygulayacağını seçme biçimi" tanımsız "dır. Bu, her bir ortam uygulamasının nasıl çalışması gerektiğine karar vermesi anlamına gelir." http://wiki.commonjs.org/wiki/Modules/Natives –

İlgili konular