当选择使用这四种模式中的一种而不是其他模式时,是否存在任何重要/细微/显着的差异?并且,当通过Object.create()vs new运算符"实例化"时,它们之间是否存在差异?
1)CoffeeScript翻译"类"定义时使用的模式:
Animal = (function() {
function Animal(name) {
this.name = name;
}
Animal.prototype.move = function(meters) {
return alert(this.name + (" moved " + meters + "m."));
};
return Animal;
})();
Run Code Online (Sandbox Code Playgroud)
和
2)Knockout似乎促进的模式:
var DifferentAnimal = function(name){
var self = this;
self.name = name;
self.move = function(meters){
return alert(this.name + (" moved " + meters + "m."));
};
}
Run Code Online (Sandbox Code Playgroud)
和
3)我经常看到的类似的简单模式:
var DifferentAnimalWithClosure = function(name){
var name = name;
var move = …Run Code Online (Sandbox Code Playgroud) 最新的1.7 Ember beta打破了我的gulp-browserify任务(下面的配置),但有以下异常:
Error: browserify-shim needs to be passed a proper browserify instance as the first argument.
Gulp一直在愉快地浏览Ember直到1.7(并且使用下面的配置继续使用最新的1.6).我在1.7的发行说明中注意到模块系统经历了一些剧变.
我的问题是:这是Ember(或者也许是Browserify)中的合法错误吗?或者Ember不再打算与浏览器这样的工具一起使用,而是支持其他一些特定的方法?
packages.json:
(注意,这个特定的站点已经通过标准脚本标记嵌入了jQuery,因此需要browserify-shim,以及global:jquery dep上的表示法.)
{
"browser": {
"handlebars": "./scripts/lib/handlebars-v1.3.0.js",
"ember": "./scripts/lib/ember-1.7.min.js"
},
"browserify-shim": {
"jquery": "global:jQuery",
"handlebars": "Handlebars",
"ember": {
"exports": "Ember",
"depends": [
"handlebars:Handlebars"
]
}
},
"browserify": {
"transform": [
"browserify-shim"
]
},
"devDependencies": {
"browserify": "^4.1.11",
"browserify-shim": "^3.5.0",
"gulp": "^3.8.1",
"gulp-browserify": "^0.5.0"
}
}
Run Code Online (Sandbox Code Playgroud)
gulpfile.js:
var gulp = require('gulp'),
browserify = require('gulp-browserify');
gulp.task('scripts', function () …Run Code Online (Sandbox Code Playgroud)