在一篇名为"未来之路"的演讲中,道格拉斯·克罗克福德表示,他不再在他的JavaScript中使用"新",而是将自己从"这个"中解脱出来.他说JavaScript的优点不是原型继承,而是无类继承.他提供了以下片段,这是他如何定义他的对象:
function constructor(init) {
var that = other_constructor(init),
member,
method = function () {
// init, member, method
};
that.method = method;
return that;
}
Run Code Online (Sandbox Code Playgroud)
他解释说:
我有一个函数,它将需要一些值来初始化它.我建议将它作为一个对象,(这样你就可以使用JSON文本来创建新实例).如果你想继承它的东西,你可以调用另一个构造函数; 无论如何,你要创建一个对象并将其放在一个名为"that"的变量中.您将创建所有成员变量(将成为对象的属性,方法变量的属性,将作用于对象的事物......)这些方法将是将关闭初始化值的函数覆盖所有成员变量和所有方法变量.
它也可以使用"this"和"that",但我建议不要.的理由,否则即是,如果不使用"这个"或"是",那么你可以采取任何的功能出来的对象和independantly打电话给他们,他们还是做同样的事情.这样可以提高语言的可靠性.也意味着你可以传递任何这些东西,使用它作为回调而不必绑定任何东西(它变得更可靠).然后,任何需要公开或特权的方法只需将它们附加到对象并返回对象.这是一个非常灵活的模式 - 你可以获得多重继承,你可以获得方面,你可以获得工厂 - 你可以用这个基本模式做很多事情.
为什么此代码段会进行以下分配?
that.method = method
Run Code Online (Sandbox Code Playgroud)
方法有什么用途?它是如何初始化的?以这种方式声明对象的目的是什么?
他的演讲非常笼统,他只花了一分钟时间来讨论这部分内容而没有详细说明他的推理或引用资源.任何人都可以阐明这种编程风格的动机吗?
视频链接:https: //www.youtube.com/watch?v = 3WgVHE5Augc约37分钟开始
我有一个关键帧动画,有多个步骤:
@keyframes rotateLeftSideCustom {
0% {
}
40% {
-webkit-transform: rotateY(-15deg);
transform: rotateY(-15deg);
opacity: .8;
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
100% {
-webkit-transform: scale(0.8) translateZ(-200px);
transform: scale(0.8) translateZ(-200px);
opacity: 0;
}
}
.section-animation {
-webkit-transform-origin: 100% 50%;
transform-origin: 100% 50%;
-webkit-animation: rotateLeftSideCustom 0.6s both ease-in;
animation: rotateLeftSideCustom 0.6s both ease-in;
}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以用JavaScript来设置动画的进度吗?
例如:
document.querySelector('.section-animation').animationState('40%');
Run Code Online (Sandbox Code Playgroud)
上下文:我正在尝试构建一个可拖动的界面,我需要将动画的进度与用户拖动的数量对齐.
我想知道使用@@iterator函数与Symbol.iterator一个函数实现迭代器是否存在特定的差异:
在MDN上,有一个页面Array.prototype.@@iterator,但在示例本身中,Symbol.iterator用作函数名称.这只是更新版本,@@iterator不再有效,或者两者都有效吗?
我正在创建一个wagtail的页面,我需要知道当前页面的上一个和下一个兄弟:
在我的肖像页面模型中,我试图定义两种方法来找到正确的网址,但我错过了一个关键部分.为了得到第一个兄弟姐妹,我可以做以下事情:
class PortraitPage(Page):
...
def first_portrait(self):
return self.get_siblings().live().first().url
Run Code Online (Sandbox Code Playgroud)
有first()和last()方法,但似乎没有一个next()或previous()方法来获得直接邻居(按照他们在wagtail管理员安排的顺序).
有没有办法实现这个目标?
今天早上我看到了来自ŠimeVidas的推文,他提出了以下使用super对象文字的可能性:
let A = {
run() {
console.log('A runs');
}
};
let B = {
run() {
super.run();
}
};
Object.setPrototypeOf(B, A);
B.run(); // A runs
Run Code Online (Sandbox Code Playgroud)
这种方法很有效,而且B.__proto__ = A;在Firefox和Chrome中也可以分配.
所以我想我也可以这样做Object.create:
let A = {
run() {
console.log('A runs');
}
};
let B = Object.create(A);
B.run = function() { super.run() };
Run Code Online (Sandbox Code Playgroud)
不幸的是,这导致两个Firefox出错:
SyntaxError:使用超级属性访问仅在方法中的方法或eval代码中有效
和Chrome:
未捕获的SyntaxError:'super'关键字在这里意外
当我尝试将属性描述符对象传递给第二个参数时,会发生同样的情况Object.create.
在语义上,它们似乎都与我相等,所以我不太确定发生了什么(是因为对象字面量?).
现在我想知道,这个标准行为是否准确定义(规格参考赞赏)?是否有一些实现缺失Object.create,或者对象文字首先不起作用?
我有wkhtmltopdf的问题.我有一个<article>跨越多个页面的元素.它没有在CSS中定义,宽度是固定的.然而,当元素跨页面时,有时文本的一部分会粘在上一页和下一页上.
你知道是什么原因引起的吗?
还有第二个问题.在下面的屏幕截图中,您还可以看到一个奇怪的方形字符,紧跟在"Empfindung"之后,出现在一些(不是全部)行结尾处(但它不是一个行结尾,它应该是一个常规空间).我尝试用常规空间替换它,但它保持不变.源网站(和内容)的编码是utf-8.
非常感谢你提前!

我正在尝试使用jQuery从我的表单中的输入字段中获取文件大小和文件类型.我认为它的工作显然不在IE 9中.任何见解都会非常感激
var my_field = this.files[0];
var myInteger = parseInt(my_field.size);
var myType = my_field.type;
Run Code Online (Sandbox Code Playgroud) 我想template动态加载 VueJS 组件。我想使用 jQuery 进行 AJAX 调用,服务器返回的任何内容都应该是templateVueJS 组件的。这是代码的简化版本,删除了 AJAX 调用,因为它与数据来自何处无关:
BoardFeed = Vue.extend
template: '<div>This should be replaced</div>'
data: ->
return items: null
created: ->
@template = "<div>Template returned from server, what I really want</div>"
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我使用了创建的钩子,我认为该钩子适合于此,但新模板永远不会呈现,只会呈现旧模板。
有可能实现这一目标吗?
我有一个可以迭代的 django 表单,例如,通过 for 循环:
{% for field in form %}
...
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
现在我试图找出for 循环之外的表单字段总数。我已尝试以下操作,但它只是返回0,即使我有 2 个表单字段:
{{ form|length }}
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点吗?
PS:这是在 django-cms 3.1.3 的背景下,如果这有帮助的话。
javascript ×5
django ×2
ecmascript-6 ×2
python ×2
coffeescript ×1
css ×1
django-cms ×1
fileapi ×1
keyframe ×1
multipage ×1
mvvm ×1
object ×1
pdf ×1
unicode ×1
vue.js ×1
wagtail ×1
wkhtmltopdf ×1