今天我看到了一个我不熟悉的JavaScript语法(在调用函数时).它就像:
def('Person') ({
init: function(name) {this.name=name;}
,speak: function(text) {alert(text || 'Hi, my name is ' + this.name);}
});
Run Code Online (Sandbox Code Playgroud)
,和
def('Ninja') << Person ({
kick: function() {this.speak('I kick u!');}
});
Run Code Online (Sandbox Code Playgroud)
1:第一个例子中括号内的对象会发生什么?它def以某种方式由函数处理,但我不明白这里发生了什么(参见def下面的函数).物体在哪里?
2:关于同样的事情,但是使用了<<我从未见过的操作员(我想!).那是什么意思?
代码来自http://gist.github.com/474994,其中Joe Dalton做了一个小的JavaScript-OO继承的事情(它显然是别人工作的一个分支,但看起来很彻底改写).也许你想在那里查看def函数引用的东西,我在这里给你:
function def(klassName, context) {
context || (context = global);
// Create class on given context (defaults to global object)
var Klass =
context[klassName] = function Klass() {
// Called as a constructor
if (this != context) { …Run Code Online (Sandbox Code Playgroud) 我刚刚升级到Rails 3并且对MacPorts,宝石和数据库进行了一些混乱.我抛弃了所有的宝石并将它们安装得很新鲜.除了pg gem的要求外,一切似乎都没问题.
创建一个为PostgreSQL准备的新Rails 3项目后,服务器无法启动,抱怨丢失的pg gem.这样做bundle install,它会持续一段时间,当然,在pg gem上失败了.
Installing pg (0.10.0) with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.10.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.10.0/ext/gem_make.out
from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `each'
from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `build_extensions'
from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/source.rb:95:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:55:in `run'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:44:in `run'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:8:in `install'
from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/cli.rb:225:in `install' …Run Code Online (Sandbox Code Playgroud)